2007-11-02 Markus Deuling <deuling@de.ibm.com>
authorUlrich Weigand <uweigand@de.ibm.com>
Fri, 2 Nov 2007 14:47:28 +0000 (14:47 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Fri, 2 Nov 2007 14:47:28 +0000 (14:47 +0000)
* frame.c (frame_id_inner): Add gdbarch parameter. Replace
current_gdbarch by gdbarch.
(frame_find_by_id, get_prev_frame_1): Use get_frame_arch to get at the
current architecture by frame_info.
* frame.h (frame_id_inner): Add gdbarch parameter.
* stack.c (return_command): Use get_frame_arch to get at the current
architecture by frame_info. Update call of frame_id_inner.
* infrun.c (handle_inferior_event): Likewise.
* dummy-frame.c (dummy_frame_push):  Use get_regcache_arch to get at the
current architecture by regcache. Update call of frame_id_inner.

gdb/ChangeLog
gdb/dummy-frame.c
gdb/frame.c
gdb/frame.h
gdb/infrun.c
gdb/stack.c

index cab902e..abf17fe 100644 (file)
@@ -1,5 +1,18 @@
 2007-11-02  Markus Deuling  <deuling@de.ibm.com>
 
+       * frame.c (frame_id_inner): Add gdbarch parameter. Replace
+       current_gdbarch by gdbarch.
+       (frame_find_by_id, get_prev_frame_1): Use get_frame_arch to get at the
+       current architecture by frame_info.
+       * frame.h (frame_id_inner): Add gdbarch parameter.
+       * stack.c (return_command): Use get_frame_arch to get at the current
+       architecture by frame_info. Update call of frame_id_inner.
+       * infrun.c (handle_inferior_event): Likewise.
+       * dummy-frame.c (dummy_frame_push):  Use get_regcache_arch to get at the
+       current architecture by regcache. Update call of frame_id_inner.
+
+2007-11-02  Markus Deuling  <deuling@de.ibm.com>
+
        * gdbarch.sh (register_name): Add gdbarch parameter.
        * gdbarch.{c,h}: Regenerate.
 
index bb1f0b4..95847c6 100644 (file)
@@ -87,6 +87,7 @@ void
 dummy_frame_push (struct regcache *caller_regcache,
                  const struct frame_id *dummy_id)
 {
+  struct gdbarch *gdbarch = get_regcache_arch (caller_regcache);
   struct dummy_frame *dummy_frame;
 
   /* Check to see if there are stale dummy frames, perhaps left over
@@ -95,7 +96,7 @@ dummy_frame_push (struct regcache *caller_regcache,
   dummy_frame = dummy_frame_stack;
   while (dummy_frame)
     /* FIXME: cagney/2004-08-02: Should just test IDs.  */
-    if (frame_id_inner (dummy_frame->id, (*dummy_id)))
+    if (frame_id_inner (gdbarch, dummy_frame->id, (*dummy_id)))
       /* Stale -- destroy!  */
       {
        dummy_frame_stack = dummy_frame->next;
index 1a7c87f..5bf419e 100644 (file)
@@ -369,7 +369,7 @@ frame_id_eq (struct frame_id l, struct frame_id r)
 }
 
 int
-frame_id_inner (struct frame_id l, struct frame_id r)
+frame_id_inner (struct gdbarch *gdbarch, struct frame_id l, struct frame_id r)
 {
   int inner;
   if (!l.stack_addr_p || !r.stack_addr_p)
@@ -380,7 +380,7 @@ frame_id_inner (struct frame_id l, struct frame_id r)
        comment in "frame.h", there is some fuzz here.  Frameless
        functions are not strictly inner than (same .stack but
        different .code and/or .special address).  */
-    inner = gdbarch_inner_than (current_gdbarch, l.stack_addr, r.stack_addr);
+    inner = gdbarch_inner_than (gdbarch, l.stack_addr, r.stack_addr);
   if (frame_debug)
     {
       fprintf_unfiltered (gdb_stdlog, "{ frame_id_inner (l=");
@@ -410,7 +410,7 @@ frame_find_by_id (struct frame_id id)
       if (frame_id_eq (id, this))
        /* An exact match.  */
        return frame;
-      if (frame_id_inner (id, this))
+      if (frame_id_inner (get_frame_arch (frame), id, this))
        /* Gone to far.  */
        return NULL;
       /* Either we're not yet gone far enough out along the frame
@@ -1175,7 +1175,8 @@ get_prev_frame_1 (struct frame_info *this_frame)
      go backwards) and sentinel frames (the test is meaningless).  */
   if (this_frame->next->level >= 0
       && this_frame->next->unwind->type != SIGTRAMP_FRAME
-      && frame_id_inner (this_id, get_frame_id (this_frame->next)))
+      && frame_id_inner (get_frame_arch (this_frame), this_id,
+                        get_frame_id (this_frame->next)))
     {
       if (frame_debug)
        {
index d754aed..aedff71 100644 (file)
@@ -175,7 +175,8 @@ extern int frame_id_eq (struct frame_id l, struct frame_id r);
 /* Returns non-zero when L is strictly inner-than R (they have
    different frame .bases).  Neither L, nor R can be `null'.  See note
    above about frameless functions.  */
-extern int frame_id_inner (struct frame_id l, struct frame_id r);
+extern int frame_id_inner (struct gdbarch *gdbarch, struct frame_id l,
+                          struct frame_id r);
 
 /* Write the internal representation of a frame ID on the specified
    stream.  */
index f03a5f2..cf7aa02 100644 (file)
@@ -2726,8 +2726,10 @@ process_event_stop_test:
      function.  Fortunately, those days are nearly upon us.  */
 #endif
   {
-    struct frame_id current_frame = get_frame_id (get_current_frame ());
-    if (!(frame_id_inner (current_frame, step_frame_id)))
+    struct frame_info *frame = get_current_frame ();
+    struct frame_id current_frame = get_frame_id (frame);
+    if (!(frame_id_inner (get_frame_arch (frame), current_frame,
+                         step_frame_id)))
       step_frame_id = current_frame;
   }
 
index d311df3..237ded1 100644 (file)
@@ -1824,7 +1824,9 @@ If you continue, the return value that you specified will be ignored.\n";
     struct frame_id selected_id = get_frame_id (get_selected_frame (NULL));
     while (!frame_id_eq (selected_id, get_frame_id (get_current_frame ())))
       {
-       if (frame_id_inner (selected_id, get_frame_id (get_current_frame ())))
+       struct frame_info *frame = get_current_frame ();
+       if (frame_id_inner (get_frame_arch (frame), selected_id,
+                           get_frame_id (frame)))
          /* Caught in the safety net, oops!  We've gone way past the
              selected frame.  */
          error (_("Problem while popping stack frames (corrupt stack?)"));