| Index: gdb/mi/mi-cmd-info.c
|
| diff --git a/gdb/mi/mi-cmd-info.c b/gdb/mi/mi-cmd-info.c
|
| index ffda52f726dcf57fcbe17006c837b821704648fc..0fce25a718d360fbbe672904385bb021cb66c878 100644
|
| --- a/gdb/mi/mi-cmd-info.c
|
| +++ b/gdb/mi/mi-cmd-info.c
|
| @@ -1,5 +1,5 @@
|
| /* MI Command Set - information commands.
|
| - Copyright (C) 2011-2012 Free Software Foundation, Inc.
|
| + Copyright (C) 2011-2013 Free Software Foundation, Inc.
|
|
|
| This file is part of GDB.
|
|
|
| @@ -19,6 +19,86 @@
|
| #include "defs.h"
|
| #include "osdata.h"
|
| #include "mi-cmds.h"
|
| +#include "ada-lang.h"
|
| +#include "arch-utils.h"
|
| +
|
| +/* Implement the "-info-ada-exceptions" GDB/MI command. */
|
| +
|
| +void
|
| +mi_cmd_info_ada_exceptions (char *command, char **argv, int argc)
|
| +{
|
| + struct ui_out *uiout = current_uiout;
|
| + struct gdbarch *gdbarch = get_current_arch ();
|
| + char *regexp;
|
| + struct cleanup *old_chain;
|
| + VEC(ada_exc_info) *exceptions;
|
| + int ix;
|
| + struct ada_exc_info *info;
|
| +
|
| + switch (argc)
|
| + {
|
| + case 0:
|
| + regexp = NULL;
|
| + break;
|
| + case 1:
|
| + regexp = argv[0];
|
| + break;
|
| + default:
|
| + error (_("Usage: -info-ada-exceptions [REGEXP]"));
|
| + break;
|
| + }
|
| +
|
| + exceptions = ada_exceptions_list (regexp);
|
| + old_chain = make_cleanup (VEC_cleanup (ada_exc_info), &exceptions);
|
| +
|
| + make_cleanup_ui_out_table_begin_end
|
| + (uiout, 2, VEC_length (ada_exc_info, exceptions), "ada-exceptions");
|
| + ui_out_table_header (uiout, 1, ui_left, "name", "Name");
|
| + ui_out_table_header (uiout, 1, ui_left, "address", "Address");
|
| + ui_out_table_body (uiout);
|
| +
|
| + for (ix = 0; VEC_iterate(ada_exc_info, exceptions, ix, info); ix++)
|
| + {
|
| + struct cleanup *sub_chain;
|
| +
|
| + sub_chain = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
|
| + ui_out_field_string (uiout, "name", info->name);
|
| + ui_out_field_core_addr (uiout, "address", gdbarch, info->addr);
|
| +
|
| + do_cleanups (sub_chain);
|
| + }
|
| +
|
| + do_cleanups (old_chain);
|
| +}
|
| +
|
| +/* Implement the "-info-gdb-mi-command" GDB/MI command. */
|
| +
|
| +void
|
| +mi_cmd_info_gdb_mi_command (char *command, char **argv, int argc)
|
| +{
|
| + const char *cmd_name;
|
| + struct mi_cmd *cmd;
|
| + struct ui_out *uiout = current_uiout;
|
| + struct cleanup *old_chain;
|
| +
|
| + /* This command takes exactly one argument. */
|
| + if (argc != 1)
|
| + error (_("Usage: -info-gdb-mi-command MI_COMMAND_NAME"));
|
| + cmd_name = argv[0];
|
| +
|
| + /* Normally, the command name (aka the "operation" in the GDB/MI
|
| + grammar), does not include the leading '-' (dash). But for
|
| + the user's convenience, allow the user to specify the command
|
| + name to be with or without that leading dash. */
|
| + if (cmd_name[0] == '-')
|
| + cmd_name++;
|
| +
|
| + cmd = mi_lookup (cmd_name);
|
| +
|
| + old_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "command");
|
| + ui_out_field_string (uiout, "exists", cmd != NULL ? "true" : "false");
|
| + do_cleanups (old_chain);
|
| +}
|
|
|
| void
|
| mi_cmd_info_os (char *command, char **argv, int argc)
|
|
|