diff options
author | Daniel Jacobowitz <drow@false.org> | 2008-06-30 17:59:03 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2008-06-30 17:59:03 +0000 |
commit | 0d254d6f30e7bf8fc5227f4a562f3a65a9be5b61 (patch) | |
tree | 7d92106adc89267ba9c3b369794fb5b0349bf119 /gdb/frame.c | |
parent | e6fde208761f4c42ddf2409566437b4114a87429 (diff) | |
download | gdb-0d254d6f30e7bf8fc5227f4a562f3a65a9be5b61.zip gdb-0d254d6f30e7bf8fc5227f4a562f3a65a9be5b61.tar.gz gdb-0d254d6f30e7bf8fc5227f4a562f3a65a9be5b61.tar.bz2 |
* frame.c (get_prev_frame_1): Call frame_unwind_find_by_frame
directly instead of get_frame_id.
Diffstat (limited to 'gdb/frame.c')
-rw-r--r-- | gdb/frame.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/gdb/frame.c b/gdb/frame.c index 937aced..a14367c 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -1180,9 +1180,13 @@ get_prev_frame_1 (struct frame_info *this_frame) return this_frame->prev; } - /* If the frame id hasn't been built yet, it must be done before - setting a stop reason. */ - this_id = get_frame_id (this_frame); + /* If the frame unwinder hasn't been selected yet, we must do so + before setting prev_p; otherwise the check for misbehaved + sniffers will think that this frame's sniffer tried to unwind + further (see frame_cleanup_after_sniffer). */ + if (this_frame->unwind == NULL) + this_frame->unwind + = frame_unwind_find_by_frame (this_frame, &this_frame->prologue_cache); this_frame->prev_p = 1; this_frame->stop_reason = UNWIND_NO_REASON; @@ -1190,6 +1194,7 @@ get_prev_frame_1 (struct frame_info *this_frame) /* Check that this frame's ID was valid. If it wasn't, don't try to unwind to the prev frame. Be careful to not apply this test to the sentinel frame. */ + this_id = get_frame_id (this_frame); if (this_frame->level >= 0 && !frame_id_p (this_id)) { if (frame_debug) |