* stack.c (parse_frame_specification): For one argument case,
authorDavid Taylor <taylor@redhat.com>
Thu, 8 Mar 2001 20:45:22 +0000 (20:45 +0000)
committerDavid Taylor <taylor@redhat.com>
Thu, 8 Mar 2001 20:45:22 +0000 (20:45 +0000)
  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.

gdb/ChangeLog
gdb/stack.c

index 05eeb4d..12114f1 100644 (file)
@@ -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
index 19efa2b..95ecdee 100644 (file)
@@ -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;