* hppa-tdep.c (frame_saved_pc): Handle backtracing through signal

handler in dynamically linked executables.
mentor-7139
This commit is contained in:
Jeff Law 1995-06-07 18:43:58 +00:00
parent d5263ab426
commit c38e0b58f3
2 changed files with 21 additions and 1 deletions

View file

@ -1,3 +1,8 @@
Wed Jun 7 12:41:42 1995 Jeff Law (law@snake.cs.utah.edu)
* hppa-tdep.c (frame_saved_pc): Handle backtracing through signal
handler in dynamically linked executables.
Tue Jun 6 10:44:25 1995 Michael Meissner <meissner@tiktok.cygnus.com>
From Andrew Cagney <cagney@highland.com.au>

View file

@ -866,7 +866,22 @@ restart:
will return to. */
u = find_unwind_entry (pc);
if (u && u->stub_type != 0)
{
unsigned int insn;
/* If this is a dynamic executable, and we're in a signal handler,
then the call chain will eventually point us into the stub for
_sigreturn. Unlike most cases, we'll be pointed to the branch
to the real sigreturn rather than the code after the real branch!.
Else, try to dig the address the stub will return to in the normal
fashion. */
insn = read_memory_integer (pc, 4);
if ((insn & 0xfc00e000) == 0xe8000000)
return (pc + extract_17 (insn) + 8) & ~0x3;
else
goto restart;
}
return pc;
}