aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog13
-rw-r--r--gdb/ada-lang.h2
-rw-r--r--gdb/ada-tasks.c41
-rw-r--r--gdb/ravenscar-thread.c2
4 files changed, 36 insertions, 22 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index aea3e17..fa48c01 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,18 @@
2011-09-16 Joel Brobecker <brobecker@adacore.com>
+ * ada-lang.h (ada_build_task_list): Remove parameter
+ `warn_if_null'.
+ * ada-tasks.c (ada_build_task_list): Remove parameter
+ `warn_if_null'. Adjust implementation and documentation.
+ (valid_task_id, ada_get_environment_task)
+ iterate_over_live_ada_tasks): Adjust call to ada_build_task_list.
+ (info_tasks_command): Adjust implementation.
+ (task_command): Likewise.
+ * ravenscar-thread.c (ravenscar_find_new_threads): Fix call
+ to ada_build_task_list.
+
+2011-09-16 Joel Brobecker <brobecker@adacore.com>
+
* ada-tasks.c (ada_tasks_check_symbol_table, task_list): Delete.
(enum ada_known_tasks_kind, struct ada_tasks_inferior_data): New.
(ada_tasks_inferior_data_handle): New static global.
diff --git a/gdb/ada-lang.h b/gdb/ada-lang.h
index c363059..cea9804 100644
--- a/gdb/ada-lang.h
+++ b/gdb/ada-lang.h
@@ -383,6 +383,6 @@ typedef void (ada_task_list_iterator_ftype) (struct ada_task_info *task);
extern void iterate_over_live_ada_tasks
(ada_task_list_iterator_ftype *iterator);
-extern int ada_build_task_list (int warn_if_null);
+extern int ada_build_task_list (void);
#endif
diff --git a/gdb/ada-tasks.c b/gdb/ada-tasks.c
index 80509ec..575080a 100644
--- a/gdb/ada-tasks.c
+++ b/gdb/ada-tasks.c
@@ -330,7 +330,7 @@ valid_task_id (int task_num)
{
struct ada_tasks_inferior_data *data;
- ada_build_task_list (0);
+ ada_build_task_list ();
data = get_ada_tasks_inferior_data (current_inferior ());
return (task_num > 0
&& task_num <= VEC_length (ada_task_info_s, data->task_list));
@@ -355,7 +355,7 @@ iterate_over_live_ada_tasks (ada_task_list_iterator_ftype *iterator)
struct ada_task_info *task;
struct ada_tasks_inferior_data *data;
- ada_build_task_list (0);
+ ada_build_task_list ();
data = get_ada_tasks_inferior_data (current_inferior ());
nb_tasks = VEC_length (ada_task_info_s, data->task_list);
@@ -905,12 +905,12 @@ read_known_tasks (void)
return 1;
}
-/* Builds the task_list by reading the Known_Tasks array from
- the inferior. Prints an appropriate message and returns non-zero
- if it failed to build this list. */
+/* Build the task_list by reading the Known_Tasks array from
+ the inferior, and return the number of tasks in that list
+ (zero means that the program is not using tasking at all). */
int
-ada_build_task_list (int warn_if_null)
+ada_build_task_list (void)
{
struct ada_tasks_inferior_data *data;
@@ -921,14 +921,7 @@ ada_build_task_list (int warn_if_null)
if (!data->task_list_valid_p)
read_known_tasks ();
- if (data->task_list == NULL)
- {
- if (warn_if_null)
- printf_filtered (_("Your application does not use any Ada tasks.\n"));
- return 0;
- }
-
- return 1;
+ return VEC_length (ada_task_info_s, data->task_list);
}
/* Print a one-line description of the task running in inferior INF
@@ -1091,10 +1084,14 @@ info_task (char *taskno_str, int from_tty, struct inferior *inf)
static void
info_tasks_command (char *arg, int from_tty)
{
- const int task_list_built = ada_build_task_list (1);
+ struct ui_out *uiout = current_uiout;
- if (!task_list_built)
- return;
+ if (ada_build_task_list () == 0)
+ {
+ ui_out_message (uiout, 0,
+ _("Your application does not use any Ada tasks.\n"));
+ return;
+ }
if (arg == NULL || *arg == '\0')
info_tasks (from_tty, current_inferior ());
@@ -1170,10 +1167,14 @@ task_command_1 (char *taskno_str, int from_tty, struct inferior *inf)
static void
task_command (char *taskno_str, int from_tty)
{
- const int task_list_built = ada_build_task_list (1);
+ struct ui_out *uiout = current_uiout;
- if (!task_list_built)
- return;
+ if (ada_build_task_list () == 0)
+ {
+ ui_out_message (uiout, 0,
+ _("Your application does not use any Ada tasks.\n"));
+ return;
+ }
if (taskno_str == NULL || taskno_str[0] == '\0')
display_current_task_id ();
diff --git a/gdb/ravenscar-thread.c b/gdb/ravenscar-thread.c
index b324fe7..696e08a8 100644
--- a/gdb/ravenscar-thread.c
+++ b/gdb/ravenscar-thread.c
@@ -222,7 +222,7 @@ ravenscar_add_thread (struct ada_task_info *task)
static void
ravenscar_find_new_threads (struct target_ops *ops)
{
- ada_build_task_list (0);
+ ada_build_task_list ();
/* Do not clear the thread list before adding the Ada task, to keep
the thread that the process stratum has included into it