summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2003-03-12 22:39:16 +0000
committerAndrew Cagney <cagney@redhat.com>2003-03-12 22:39:16 +0000
commit325d1186d269da01bc2554c17b1fcc4ac3c8cf7f (patch)
tree7ca4acaf8d0cfb86cc083fe2b3bbf713d45724e2
parentcf57a5e246db1887419f5265f4a003bd6160d325 (diff)
downloadgdb-325d1186d269da01bc2554c17b1fcc4ac3c8cf7f.tar.gz
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.
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/eval.c2
-rw-r--r--gdb/findvar.c2
-rw-r--r--gdb/frame.c9
4 files changed, 18 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 204c20cb57a..764c0d5f937 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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.
diff --git a/gdb/eval.c b/gdb/eval.c
index a456e9cb74c..d5d08927893 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -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.",
diff --git a/gdb/findvar.c b/gdb/findvar.c
index 3147126a75b..38d01cd51cf 100644
--- a/gdb/findvar.c
+++ b/gdb/findvar.c
@@ -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);
diff --git a/gdb/frame.c b/gdb/frame.c
index d5f052bf4f4..7975090c664 100644
--- a/gdb/frame.c
+++ b/gdb/frame.c
@@ -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)