2003-03-12 Andrew Cagney <cagney@redhat.com>
authorAndrew Cagney <cagney@redhat.com>
Wed, 12 Mar 2003 22:39:16 +0000 (22:39 +0000)
committerAndrew Cagney <cagney@redhat.com>
Wed, 12 Mar 2003 22:39:16 +0000 (22:39 +0000)
* frame.c (get_current_frame): Check target_has_registers before
checking target_has_stack.
* eval.c (evaluate_subexp_standard): Use get_selected_frame,
instead of deprecated_selected_frame.
* findvar.c (value_of_register): Pass "frame", not
deprecated_selected_frame, to value_of_builtin_reg.

gdb/ChangeLog
gdb/eval.c
gdb/findvar.c
gdb/frame.c

index 204c20c..764c0d5 100644 (file)
@@ -1,5 +1,14 @@
 2003-03-12  Andrew Cagney  <cagney@redhat.com>
 
+       * frame.c (get_current_frame): Check target_has_registers before
+       checking target_has_stack.
+       * eval.c (evaluate_subexp_standard): Use get_selected_frame,
+       instead of deprecated_selected_frame.
+       * findvar.c (value_of_register): Pass "frame", not
+       deprecated_selected_frame, to value_of_builtin_reg.
+
+2003-03-12  Andrew Cagney  <cagney@redhat.com>
+
        * regcache.c (regcache_cooked_write_signed): New function.
        (regcache_cooked_write_unsigned): New function.
        (regcache_cooked_read_unsigned): Fix regnum in range assertion.
index a456e9c..d5d0892 100644 (file)
@@ -447,7 +447,7 @@ evaluate_subexp_standard (struct type *expect_type,
     case OP_REGISTER:
       {
        int regno = longest_to_int (exp->elts[pc + 1].longconst);
-       struct value *val = value_of_register (regno, deprecated_selected_frame);
+       struct value *val = value_of_register (regno, get_selected_frame ());
        (*pos) += 2;
        if (val == NULL)
          error ("Value of register %s not available.",
index 3147126..38d01cd 100644 (file)
@@ -305,7 +305,7 @@ value_of_register (int regnum, struct frame_info *frame)
   /* Builtin registers lie completly outside of the range of normal
      registers.  Catch them early so that the target never sees them.  */
   if (regnum >= NUM_REGS + NUM_PSEUDO_REGS)
-    return value_of_builtin_reg (regnum, deprecated_selected_frame);
+    return value_of_builtin_reg (regnum, frame);
 
   get_saved_register (raw_buffer, &optim, &addr,
                      frame, regnum, &lval);
index d5f052b..7975090 100644 (file)
@@ -566,10 +566,15 @@ unwind_to_current_frame (struct ui_out *ui_out, void *args)
 struct frame_info *
 get_current_frame (void)
 {
-  if (!target_has_stack)
-    error ("No stack.");
+  /* First check, and report, the lack of registers.  Having GDB
+     report "No stack!" or "No memory" when the target doesn't even
+     have registers is very confusing.  Besides, "printcmd.exp"
+     explicitly checks that ``print $pc'' with no registers prints "No
+     registers".  */
   if (!target_has_registers)
     error ("No registers.");
+  if (!target_has_stack)
+    error ("No stack.");
   if (!target_has_memory)
     error ("No memory.");
   if (current_frame == NULL)