From 5b9ecd3450b63021c17a12e157459613a7627265 Mon Sep 17 00:00:00 2001 From: brobecke Date: Mon, 3 Oct 2011 21:38:30 +0000 Subject: [PATCH] [Ada] New GDB/MI command: -ada-tasks-info This patch introduces a new GDB/MI command: -ada-tasks-info, which is meant to be the MI equivalent of the CLI `info tasks' command. This new command returns an array, with each row corresponding to one task. For now, the columns of the array corresponds to the columns displayed in the CLI output. gdb/ChangeLog: * ada-lang.h (struct inferior): Declare. (print_ada_task_info): Add declaration. * ada-tasks.c (print_ada_task_info): Make non-static. * mi/mi-cmds.c (mi_cmds): Add "ada-task-info". * mi/mi-cmds.h (mi_cmd_ada_task_info): Add declaration. * mi/mi-main.c: #include "ada-lang.h". (mi_cmd_list_features): Add "ada-task-info" to the list of supported features. (mi_cmd_ada_task_info): New function. --- gdb/ChangeLog | 12 ++++++++++++ gdb/ada-lang.h | 5 +++++ gdb/ada-tasks.c | 2 +- gdb/mi/mi-cmds.c | 1 + gdb/mi/mi-cmds.h | 1 + gdb/mi/mi-main.c | 13 +++++++++++++ 6 files changed, 33 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index de4fdc8243..c17728b043 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,17 @@ 2011-10-03 Joel Brobecker + * ada-lang.h (struct inferior): Declare. + (print_ada_task_info): Add declaration. + * ada-tasks.c (print_ada_task_info): Make non-static. + * mi/mi-cmds.c (mi_cmds): Add "ada-task-info". + * mi/mi-cmds.h (mi_cmd_ada_task_info): Add declaration. + * mi/mi-main.c: #include "ada-lang.h". + (mi_cmd_list_features): Add "ada-task-info" to the list + of supported features. + (mi_cmd_ada_task_info): New function. + +2011-10-03 Joel Brobecker + * python/python.c (python_run_simple_file): New function. (source_python_script, source_python_script_for_objfile): Replace call to PyRun_SimpleFile by call to diff --git a/gdb/ada-lang.h b/gdb/ada-lang.h index cea9804528..d887ef381c 100644 --- a/gdb/ada-lang.h +++ b/gdb/ada-lang.h @@ -22,6 +22,7 @@ #define ADA_LANG_H 1 struct frame_info; +struct inferior; #include "value.h" #include "gdbtypes.h" @@ -385,4 +386,8 @@ extern void iterate_over_live_ada_tasks extern int ada_build_task_list (void); +extern void print_ada_task_info (struct ui_out *uiout, + char *taskno_str, + struct inferior *inf); + #endif diff --git a/gdb/ada-tasks.c b/gdb/ada-tasks.c index 6e2f2f590c..7dff8f8ac1 100644 --- a/gdb/ada-tasks.c +++ b/gdb/ada-tasks.c @@ -929,7 +929,7 @@ ada_build_task_list (void) interpreted as a task number, and the table will be limited to that task only. */ -static void +void print_ada_task_info (struct ui_out *uiout, char *arg_str, struct inferior *inf) diff --git a/gdb/mi/mi-cmds.c b/gdb/mi/mi-cmds.c index 0b32db0c9a..960d2dc60f 100644 --- a/gdb/mi/mi-cmds.c +++ b/gdb/mi/mi-cmds.c @@ -33,6 +33,7 @@ static void build_table (struct mi_cmd *commands); struct mi_cmd mi_cmds[] = { + { "ada-task-info", { NULL, 0 }, mi_cmd_ada_task_info }, { "add-inferior", { NULL, 0 }, mi_cmd_add_inferior }, { "break-after", { "ignore", 1 }, NULL }, { "break-condition", { "cond", 1 }, NULL }, diff --git a/gdb/mi/mi-cmds.h b/gdb/mi/mi-cmds.h index 18b4ad7d3b..67aae5977c 100644 --- a/gdb/mi/mi-cmds.h +++ b/gdb/mi/mi-cmds.h @@ -36,6 +36,7 @@ extern const char mi_all_values[]; typedef void (mi_cmd_argv_ftype) (char *command, char **argv, int argc); /* Function implementing each command */ +extern mi_cmd_argv_ftype mi_cmd_ada_task_info; extern mi_cmd_argv_ftype mi_cmd_add_inferior; extern mi_cmd_argv_ftype mi_cmd_break_insert; extern mi_cmd_argv_ftype mi_cmd_break_commands; diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index 4ab2012950..a9c7652b0c 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -52,6 +52,7 @@ #include "osdata.h" #include "splay-tree.h" #include "tracepoint.h" +#include "ada-lang.h" #include #include @@ -1720,6 +1721,7 @@ mi_cmd_list_features (char *command, char **argv, int argc) ui_out_field_string (uiout, NULL, "thread-info"); ui_out_field_string (uiout, NULL, "data-read-memory-bytes"); ui_out_field_string (uiout, NULL, "breakpoint-notifications"); + ui_out_field_string (uiout, NULL, "ada-task-info"); #if HAVE_PYTHON ui_out_field_string (uiout, NULL, "python"); @@ -2503,3 +2505,14 @@ mi_cmd_trace_stop (char *command, char **argv, int argc) stop_tracing (); trace_status_mi (1); } + +/* Implement the "-ada-task-info" GDB/MI command. */ + +void +mi_cmd_ada_task_info (char *command, char **argv, int argc) +{ + if (argc != 0 && argc != 1) + error (_("Invalid MI command")); + + print_ada_task_info (current_uiout, argv[0], current_inferior ()); +} -- 2.11.0