* frame.c (get_prev_frame): When unwinding normal frames, check
that the PC isn't zero.
* hppa-tdep.c (hppa_stub_frame_unwind_cache): Delete check for a
zero PC.
2004-12-12 Andrew Cagney <cagney@gnu.org>
+ * frame.c (get_prev_frame): When unwinding normal frames, check
+ that the PC isn't zero.
+ * hppa-tdep.c (hppa_stub_frame_unwind_cache): Delete check for a
+ zero PC.
+
* MAINTAINERS: Reword description of what "Target Instruction Set
Architectures" covers.
return NULL;
}
+ /* Assume that the only way to get a zero PC is through something
+ like a SIGSEGV or a dummy frame, and hence that NORMAL frames
+ will never unwind a zero PC. */
+ if (this_frame->level > 0
+ && get_frame_type (this_frame) == NORMAL_FRAME
+ && get_frame_type (get_next_frame (this_frame)) == NORMAL_FRAME
+ && get_frame_pc (this_frame) == 0)
+ {
+ frame_debug_got_null_frame (gdb_stdlog, this_frame, "zero PC");
+ return NULL;
+ }
+
return get_prev_frame_1 (this_frame);
}
if (*this_cache)
return *this_cache;
- if (frame_pc_unwind (next_frame) == 0)
- return NULL;
-
info = FRAME_OBSTACK_ZALLOC (struct hppa_stub_unwind_cache);
*this_cache = info;
info->saved_regs = trad_frame_alloc_saved_regs (next_frame);