aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/stack.c11
2 files changed, 16 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 05eeb4d..12114f1 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+Thu Mar 8 15:43:40 2001 David Taylor <taylor@redhat.com>
+
+ * stack.c (parse_frame_specification): For one argument case,
+ handle the situation where the argument is an integer, not an
+ address -- arguably the most common case. This matters on
+ targets where pointers and addresses are different.
+
2001-03-08 Andrew Cagney <ac131313@redhat.com>
* TODO: Revise 5.1 list. Delete PARAMS task. Add coding standard
diff --git a/gdb/stack.c b/gdb/stack.c
index 19efa2b..95ecdee4 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -704,6 +704,7 @@ parse_frame_specification (char *frame_exp)
int numargs = 0;
#define MAXARGS 4
CORE_ADDR args[MAXARGS];
+ int level;
if (frame_exp)
{
@@ -723,8 +724,15 @@ parse_frame_specification (char *frame_exp)
addr_string = savestring (frame_exp, p - frame_exp);
{
+ value_ptr vp;
+
tmp_cleanup = make_cleanup (xfree, addr_string);
- args[numargs++] = parse_and_eval_address (addr_string);
+
+ vp = parse_and_eval (addr_string);
+ if (numargs == 0)
+ level = value_as_long (vp);
+
+ args[numargs++] = value_as_pointer (vp);
do_cleanups (tmp_cleanup);
}
@@ -744,7 +752,6 @@ parse_frame_specification (char *frame_exp)
/* NOTREACHED */
case 1:
{
- int level = args[0];
struct frame_info *fid =
find_relative_frame (get_current_frame (), &level);
struct frame_info *tfid;