jit: c++-ify gdb_block
[deliverable/binutils-gdb.git] / gdb / ada-tasks.c
index 24ceab1fcab852992295f61600e3e65e651b7e86..67aa0c798890aae65c5bbada9635f157ac040681 100644 (file)
@@ -25,6 +25,7 @@
 #include "gdbthread.h"
 #include "progspace.h"
 #include "objfiles.h"
+#include "cli/cli-style.h"
 
 static int ada_build_task_list ();
 
@@ -346,7 +347,7 @@ valid_task_id (int task_num)
    task state.  */
 
 static int
-ada_task_is_alive (struct ada_task_info *task_info)
+ada_task_is_alive (const struct ada_task_info *task_info)
 {
   return (task_info->state != Terminated);
 }
@@ -603,7 +604,7 @@ ptid_from_atcb_common (struct value *common_value)
 }
 
 /* Read the ATCB data of a given task given its TASK_ID (which is in practice
-   the address of its assocated ATCB record), and store the result inside
+   the address of its associated ATCB record), and store the result inside
    TASK_INFO.  */
 
 static void
@@ -668,7 +669,7 @@ read_atcb (CORE_ADDR task_id, struct ada_task_info *task_info)
          msym = lookup_minimal_symbol_by_pc (task_id);
          if (msym.minsym)
            {
-             const char *full_name = MSYMBOL_LINKAGE_NAME (msym.minsym);
+             const char *full_name = msym.minsym->linkage_name ();
              const char *task_name = full_name;
              const char *p;
 
@@ -743,7 +744,7 @@ read_atcb (CORE_ADDR task_id, struct ada_task_info *task_info)
                                        called_task_fieldno));
     }
 
-  /* If the ATCB cotnains some information about RV callers, then
+  /* If the ATCB contains some information about RV callers, then
      compute the "caller_task".  Otherwise, leave it as zero.  */
 
   if (pspace_data->atcb_fieldno.call >= 0)
@@ -1126,14 +1127,17 @@ print_ada_task_info (struct ui_out *uiout,
       /* Print the associated Thread ID.  */
       if (uiout->is_mi_like_p ())
         {
-         thread_info *thread = find_thread_ptid (task_info->ptid);
+         thread_info *thread = (ada_task_is_alive (task_info)
+                                ? find_thread_ptid (task_info->ptid)
+                                : nullptr);
 
          if (thread != NULL)
            uiout->field_signed ("thread-id", thread->global_num);
          else
-           /* This should never happen unless there is a bug somewhere,
-              but be resilient when that happens.  */
-           uiout->field_skip ("thread-id");
+           {
+             /* This can happen if the thread is no longer alive.  */
+             uiout->field_skip ("thread-id");
+           }
        }
 
       /* Print the ID of the parent task.  */
@@ -1163,9 +1167,14 @@ print_ada_task_info (struct ui_out *uiout,
       /* Finally, print the task name, without quotes around it, as mi like
         is not expecting quotes, and in non mi-like no need for quotes
          as there is a specific column for the name.  */
-      uiout->field_string ("name",
-                          task_info->name[0] != '\0' ? task_info->name
-                          : _("<no name>"));
+      uiout->field_fmt ("name",
+                       (task_info->name[0] != '\0'
+                        ? ui_file_style ()
+                        : metadata_style.style ()),
+                       "%s",
+                       (task_info->name[0] != '\0'
+                        ? task_info->name
+                        : _("<no name>")));
 
       uiout->text ("\n");
     }
@@ -1201,7 +1210,7 @@ info_task (struct ui_out *uiout, const char *taskno_str, struct inferior *inf)
   if (task_info->name[0] != '\0')
     printf_filtered (_("Name: %s\n"), task_info->name);
   else
-    printf_filtered (_("<no name>\n"));
+    fprintf_styled (gdb_stdout, metadata_style.style (), _("<no name>\n"));
 
   /* Print the TID and LWP.  */
   printf_filtered (_("Thread: %#lx\n"), task_info->ptid.tid ());
This page took 0.028998 seconds and 4 git commands to generate.