From b1c8db38fceb8464f02f1673b52c926c56203593 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Wed, 5 Oct 2011 07:41:13 +0000 Subject: [PATCH] 2011-10-05 Tristan Gingold * ada-tasks.c (read_atcb): Make ravenscar_task_name static. Extract the ravenscar task name from the symbol for the atcb. --- gdb/ChangeLog | 5 +++++ gdb/ada-tasks.c | 28 ++++++++++++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 29a61fe..a166d14 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2011-10-05 Tristan Gingold + + * ada-tasks.c (read_atcb): Make ravenscar_task_name static. + Extract the ravenscar task name from the symbol for the atcb. + 2011-10-04 Paul Koning * python/py-type.c (typy_make_iter): Add forward declaration. diff --git a/gdb/ada-tasks.c b/gdb/ada-tasks.c index 2673fed..8ab5ad5 100644 --- a/gdb/ada-tasks.c +++ b/gdb/ada-tasks.c @@ -591,7 +591,7 @@ read_atcb (CORE_ADDR task_id, struct ada_task_info *task_info) struct value *entry_calls_value; struct value *entry_calls_value_element; int called_task_fieldno = -1; - const char ravenscar_task_name[] = "Ravenscar task"; + static const char ravenscar_task_name[] = "Ravenscar task"; const struct ada_tasks_pspace_data *pspace_data = get_ada_tasks_pspace_data (current_program_space); @@ -629,7 +629,31 @@ read_atcb (CORE_ADDR task_id, struct ada_task_info *task_info) pspace_data->atcb_fieldno.image), sizeof (task_info->name) - 1); else - strcpy (task_info->name, ravenscar_task_name); + { + struct minimal_symbol *msym; + + msym = lookup_minimal_symbol_by_pc (task_id); + if (msym) + { + const char *full_name = SYMBOL_LINKAGE_NAME (msym); + const char *task_name = full_name; + const char *p; + + /* Strip the prefix. */ + for (p = full_name; *p; p++) + if (p[0] == '_' && p[1] == '_') + task_name = p + 2; + + /* Copy the task name. */ + strncpy (task_info->name, task_name, sizeof (task_info->name)); + task_info->name[sizeof (task_info->name) - 1] = 0; + } + else + { + /* No symbol found. Use a default name. */ + strcpy (task_info->name, ravenscar_task_name); + } + } } else { -- 2.7.4