* thread.c (info_threads_command): Use get_selected_frame ().
authorDaniel Jacobowitz <drow@false.org>
Mon, 28 Jul 2003 13:02:12 +0000 (13:02 +0000)
committerDaniel Jacobowitz <drow@false.org>
Mon, 28 Jul 2003 13:02:12 +0000 (13:02 +0000)
Check that there is at least one non-sentinel frame.

gdb/ChangeLog
gdb/thread.c

index 752f7aa2b34cbb8a9b099a8874499e9274c702c2..40a6a6a667a8fd9868fae8161cc35f9f40cb0411 100644 (file)
@@ -1,3 +1,8 @@
+2003-07-28  Daniel Jacobowitz  <drow@mvista.com>
+
+       * thread.c (info_threads_command): Use get_selected_frame ().
+       Check that there is at least one non-sentinel frame.
+
 2003-07-27  Stephane Carrez  <stcarrez@nerim.fr>
 
        * m68hc11-tdep.c (struct frame_extra_info): Remove.
index 315f33b1c4aaec6073de36c77f97fe44bf93fe12..f8cc18d72a2138fb0b8b74ae61906846ab1cf58a 100644 (file)
@@ -417,14 +417,14 @@ info_threads_command (char *arg, int from_tty)
   struct thread_info *tp;
   ptid_t current_ptid;
   struct frame_info *cur_frame;
-  int saved_frame_level = frame_relative_level (deprecated_selected_frame);
+  int saved_frame_level = frame_relative_level (get_selected_frame ());
   int counter;
   char *extra_info;
 
-  /* Avoid coredumps which would happen if we tried to access a NULL
-     deprecated_selected_frame.  */
-  if (!target_has_stack)
-    error ("No stack.");
+  /* Check that there really is a frame.  This happens when a simulator
+     is connected but not loaded or running, for instance.  */
+  if (legacy_frame_p (current_gdbarch) && saved_frame_level < 0)
+    error ("No frame.");
 
   prune_threads ();
   target_find_new_threads ();
@@ -448,10 +448,7 @@ info_threads_command (char *arg, int from_tty)
       puts_filtered ("  ");
 
       switch_to_thread (tp->ptid);
-      if (deprecated_selected_frame)
-       print_stack_frame (deprecated_selected_frame, -1, 0);
-      else
-       printf_filtered ("[No stack.]\n");
+      print_stack_frame (get_selected_frame (), -1, 0);
     }
 
   switch_to_thread (current_ptid);
@@ -463,12 +460,12 @@ info_threads_command (char *arg, int from_tty)
    * of the stack (leaf frame).
    */
   counter = saved_frame_level;
-  cur_frame = find_relative_frame (deprecated_selected_frame, &counter);
+  cur_frame = find_relative_frame (get_selected_frame (), &counter);
   if (counter != 0)
     {
       /* Ooops, can't restore, tell user where we are. */
       warning ("Couldn't restore frame in current thread, at frame 0");
-      print_stack_frame (deprecated_selected_frame, -1, 0);
+      print_stack_frame (get_selected_frame (), -1, 0);
     }
   else
     {