From e0d2ae162559cd1944757266597d6d722a3e1f58 Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Tue, 11 Mar 2003 17:47:13 +0000 Subject: [PATCH] 2003-03-11 Andrew Cagney * frame.c (deprecated_update_frame_pc_hack): Don't assume a next frame. Problem found by Corinna Vinschen. --- gdb/ChangeLog | 5 +++++ gdb/frame.c | 18 ++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index da11769925..26234b8447 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2003-03-11 Andrew Cagney + + * frame.c (deprecated_update_frame_pc_hack): Don't assume a next + frame. Problem found by Corinna Vinschen. + 2003-03-11 Pierre Muller * doublest.c (floatformat_from_length): Accept also diff --git a/gdb/frame.c b/gdb/frame.c index bbe870af0f..0bef68b2a1 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