2004-02-08 Andrew Cagney <cagney@redhat.com>
authorAndrew Cagney <cagney@redhat.com>
Sun, 8 Feb 2004 19:34:17 +0000 (19:34 +0000)
committerAndrew Cagney <cagney@redhat.com>
Sun, 8 Feb 2004 19:34:17 +0000 (19:34 +0000)
* frame.c (legacy_saved_regs_this_id): Return a null frame ID.
(get_frame_id): Allow the UNKNOWN_FRAME.
(frame_register_unwind, get_frame_type): Ditto.

gdb/ChangeLog
gdb/frame.c

index c0c1f6aa47d4aba2362f228a3b7ace5d50d08fe0..cfddb8a5e8ac12a530602bae323c1d1e84eacb37 100644 (file)
@@ -1,5 +1,9 @@
 2004-02-08  Andrew Cagney  <cagney@redhat.com>
 
+       * frame.c (legacy_saved_regs_this_id): Return a null frame ID.
+       (get_frame_id): Allow the UNKNOWN_FRAME.
+       (frame_register_unwind, get_frame_type): Ditto.
+
        * frame.c (legacy_frame_p): Check for DEPRECATED_TARGET_READ_FP_P
        and DEPRECATED_FP_REGNUM.  Don't assume that the lack of
        unwind_dummy_id indicates a legacy frame.
index 455d560a65b1842d3472b8d3172d335ef38be7a5..1c54f563a5c9013fa554fa5aca5632e88427b5d3 100644 (file)
@@ -234,7 +234,6 @@ get_frame_id (struct frame_info *fi)
             directly.  Unfortunately, legacy code, called by
             legacy_get_prev_frame, explicitly set the frames type
             using the method deprecated_set_frame_type().  */
-         gdb_assert (fi->unwind->type != UNKNOWN_FRAME);
          fi->type = fi->unwind->type;
        }
       /* Find THIS frame's ID.  */
@@ -538,7 +537,6 @@ frame_register_unwind (struct frame_info *frame, int regnum,
         directly.  Unfortunately, legacy code, called by
         legacy_get_prev_frame, explicitly set the frames type using
         the method deprecated_set_frame_type().  */
-      gdb_assert (frame->unwind->type != UNKNOWN_FRAME);
       frame->type = frame->unwind->type;
     }
 
@@ -1029,9 +1027,12 @@ legacy_saved_regs_this_id (struct frame_info *next_frame,
                           void **this_prologue_cache,
                           struct frame_id *id)
 {
-  /* legacy_get_prev_frame() always sets ->this_id.p, hence this is
-     never needed.  */
-  internal_error (__FILE__, __LINE__, "legacy_saved_regs_this_id() called");
+  /* A developer is trying to bring up a new architecture, help them
+     by providing a default unwinder that refuses to unwind anything
+     (the ID is always NULL).  In the case of legacy code,
+     legacy_get_prev_frame() will have previously set ->this_id.p, so
+     this code won't be called.  */
+  (*id) = null_frame_id;
 }
        
 const struct frame_unwind legacy_saved_regs_unwinder = {
@@ -2133,7 +2134,6 @@ get_frame_type (struct frame_info *frame)
         directly.  Unfortunately, legacy code, called by
         legacy_get_prev_frame, explicitly set the frames type using
         the method deprecated_set_frame_type().  */
-      gdb_assert (frame->unwind->type != UNKNOWN_FRAME);
       frame->type = frame->unwind->type;
     }
   if (frame->type == UNKNOWN_FRAME)