From 1152e35e879dc17287a4a549f397b0a39ae05c9d Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Sun, 8 Feb 2004 19:34:17 +0000 Subject: [PATCH] 2004-02-08 Andrew Cagney * 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 | 4 ++++ gdb/frame.c | 12 ++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c0c1f6aa47d..cfddb8a5e8a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,9 @@ 2004-02-08 Andrew Cagney + * 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. diff --git a/gdb/frame.c b/gdb/frame.c index 455d560a65b..1c54f563a5c 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -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) -- 2.34.1