2004-12-07 Randolph Chung <tausq@debian.org>
* hppa-tdep.c (hppa_stub_Frame_unwind_cache): Stop unwinding if unwinding from a frame with pc == 0. (hppa_stub_frame_this_id): Likewise. (hppa_stub_frame_prev_register): Only provide real values if the frame cache is not NULL.
This commit is contained in:
parent
419b8bfb23
commit
f1b38a5791
2 changed files with 23 additions and 3 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2004-12-07 Randolph Chung <tausq@debian.org>
|
||||||
|
|
||||||
|
* hppa-tdep.c (hppa_stub_Frame_unwind_cache): Stop unwinding if
|
||||||
|
unwinding from a frame with pc == 0.
|
||||||
|
(hppa_stub_frame_this_id): Likewise.
|
||||||
|
(hppa_stub_frame_prev_register): Only provide real values if the frame
|
||||||
|
cache is not NULL.
|
||||||
|
|
||||||
2004-12-07 Randolph Chung <tausq@debian.org>
|
2004-12-07 Randolph Chung <tausq@debian.org>
|
||||||
|
|
||||||
* solib-som.c: New file.
|
* solib-som.c: New file.
|
||||||
|
|
|
@ -2092,6 +2092,9 @@ hppa_stub_frame_unwind_cache (struct frame_info *next_frame,
|
||||||
if (*this_cache)
|
if (*this_cache)
|
||||||
return *this_cache;
|
return *this_cache;
|
||||||
|
|
||||||
|
if (frame_pc_unwind (next_frame) == 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
info = FRAME_OBSTACK_ZALLOC (struct hppa_stub_unwind_cache);
|
info = FRAME_OBSTACK_ZALLOC (struct hppa_stub_unwind_cache);
|
||||||
*this_cache = info;
|
*this_cache = info;
|
||||||
info->saved_regs = trad_frame_alloc_saved_regs (next_frame);
|
info->saved_regs = trad_frame_alloc_saved_regs (next_frame);
|
||||||
|
@ -2126,7 +2129,11 @@ hppa_stub_frame_this_id (struct frame_info *next_frame,
|
||||||
{
|
{
|
||||||
struct hppa_stub_unwind_cache *info
|
struct hppa_stub_unwind_cache *info
|
||||||
= hppa_stub_frame_unwind_cache (next_frame, this_prologue_cache);
|
= hppa_stub_frame_unwind_cache (next_frame, this_prologue_cache);
|
||||||
*this_id = frame_id_build (info->base, frame_pc_unwind (next_frame));
|
|
||||||
|
if (info)
|
||||||
|
*this_id = frame_id_build (info->base, frame_func_unwind (next_frame));
|
||||||
|
else
|
||||||
|
*this_id = null_frame_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -2138,8 +2145,13 @@ hppa_stub_frame_prev_register (struct frame_info *next_frame,
|
||||||
{
|
{
|
||||||
struct hppa_stub_unwind_cache *info
|
struct hppa_stub_unwind_cache *info
|
||||||
= hppa_stub_frame_unwind_cache (next_frame, this_prologue_cache);
|
= hppa_stub_frame_unwind_cache (next_frame, this_prologue_cache);
|
||||||
hppa_frame_prev_register_helper (next_frame, info->saved_regs, regnum,
|
|
||||||
optimizedp, lvalp, addrp, realnump, valuep);
|
if (info)
|
||||||
|
hppa_frame_prev_register_helper (next_frame, info->saved_regs, regnum,
|
||||||
|
optimizedp, lvalp, addrp, realnump,
|
||||||
|
valuep);
|
||||||
|
else
|
||||||
|
error ("Requesting registers from null frame.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct frame_unwind hppa_stub_frame_unwind = {
|
static const struct frame_unwind hppa_stub_frame_unwind = {
|
||||||
|
|
Loading…
Add table
Reference in a new issue