aboutsummaryrefslogtreecommitdiff
path: root/gdb/frame.c
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2003-03-11 17:47:13 +0000
committerAndrew Cagney <cagney@redhat.com>2003-03-11 17:47:13 +0000
commite0d2ae162559cd1944757266597d6d722a3e1f58 (patch)
tree63194a7e6f7c549650b88f19e36df0e9989ab143 /gdb/frame.c
parentddbfdd0686dc4fddb4ca5bf33d1f4032fade7752 (diff)
downloadgdb-e0d2ae162559cd1944757266597d6d722a3e1f58.zip
gdb-e0d2ae162559cd1944757266597d6d722a3e1f58.tar.gz
gdb-e0d2ae162559cd1944757266597d6d722a3e1f58.tar.bz2
2003-03-11 Andrew Cagney <cagney@redhat.com>
* frame.c (deprecated_update_frame_pc_hack): Don't assume a next frame. Problem found by Corinna Vinschen.
Diffstat (limited to 'gdb/frame.c')
-rw-r--r--gdb/frame.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/gdb/frame.c b/gdb/frame.c
index bbe870a..0bef68b 100644
--- a/gdb/frame.c
+++ b/gdb/frame.c
@@ -1583,12 +1583,18 @@ deprecated_update_frame_pc_hack (struct frame_info *frame, CORE_ADDR pc)
{
/* See comment in "frame.h". */
frame->pc = pc;
- /* While we're at it, update this frame's cached PC value, found in
- the next frame. Oh, for the day when "struct frame_info" is
- opaque and this hack on hack can go. */
- gdb_assert (frame->next != NULL);
- frame->next->pc_unwind_cache = pc;
- frame->next->pc_unwind_cache_p = 1;
+ /* NOTE: cagney/2003-03-11: Some architectures (e.g., Arm) are
+ maintaining a locally allocated frame object. Since such frame's
+ are not in the frame chain, it isn't possible to assume that the
+ frame has a next. Sigh. */
+ if (frame->next != NULL)
+ {
+ /* While we're at it, update this frame's cached PC value, found
+ in the next frame. Oh for the day when "struct frame_info"
+ is opaque and this hack on hack can just go away. */
+ frame->next->pc_unwind_cache = pc;
+ frame->next->pc_unwind_cache_p = 1;
+ }
}
void