2004-12-07 Randolph Chung <tausq@debian.org>

* frame.c (get_prev_frame): Don't terminate unwinding at main if we
	are unwinding through a dummy frame.
This commit is contained in:
Randolph Chung 2004-12-08 01:56:16 +00:00
parent f77a2124d6
commit cc9bed8396
2 changed files with 16 additions and 0 deletions

View file

@ -1,3 +1,8 @@
2004-12-07 Randolph Chung <tausq@debian.org>
* frame.c (get_prev_frame): Don't terminate unwinding at main if we
are unwinding through a dummy frame.
2004-12-07 Randolph Chung <tausq@debian.org>
* hppa-tdep.h (gdbarch_tdep): Add unwind_adjust_stub method.

View file

@ -1199,7 +1199,18 @@ get_prev_frame (struct frame_info *this_frame)
get_current_frame(). */
gdb_assert (this_frame != NULL);
/* tausq/2004-12-07: Dummy frames are skipped because it doesn't make much
sense to stop unwinding at a dummy frame. One place where a dummy
frame may have an address "inside_main_func" is on HPUX. On HPUX, the
pcsqh register (space register for the instruction at the head of the
instruction queue) cannot be written directly; the only way to set it
is to branch to code that is in the target space. In order to implement
frame dummies on HPUX, the called function is made to jump back to where
the inferior was when the user function was called. If gdb was inside
the main function when we created the dummy frame, the dummy frame will
point inside the main function. */
if (this_frame->level >= 0
&& get_frame_type (this_frame) != DUMMY_FRAME
&& !backtrace_past_main
&& inside_main_func (this_frame))
/* Don't unwind past main(). Note, this is done _before_ the