aboutsummaryrefslogtreecommitdiff
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
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.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/frame.c18
2 files changed, 17 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index da11769..26234b8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+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.
+
2003-03-11 Pierre Muller <muller@ics.u-strasbg.fr>
* doublest.c (floatformat_from_length): Accept also
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