From 0a1e1ca1f645fe9728ae8fa5d5f20f11572285db Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Wed, 12 Mar 2003 22:39:16 +0000 Subject: 2003-03-12 Andrew Cagney * 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 | 9 +++++++++ gdb/eval.c | 2 +- gdb/findvar.c | 2 +- gdb/frame.c | 9 +++++++-- 4 files changed, 18 insertions(+), 4 deletions(-) (limited to 'gdb') diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 204c20c..764c0d5 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,14 @@ 2003-03-12 Andrew Cagney + * 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 + * 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 a456e9c..d5d0892 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 3147126..38d01cd 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 d5f052b..7975090 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) -- cgit v1.1