mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-11-26 09:07:38 +01:00
(update_frame_state): On HP-UX, catch ucontext_t location from r32.
(Logical change 1.77)
This commit is contained in:
parent
fb293ae33d
commit
60b8811527
1 changed files with 10 additions and 0 deletions
|
@ -110,7 +110,17 @@ update_frame_state (struct cursor *c)
|
||||||
num_regs = 0;
|
num_regs = 0;
|
||||||
if (c->is_signal_frame)
|
if (c->is_signal_frame)
|
||||||
{
|
{
|
||||||
|
/* Caveat: #ifdef __hpux is wrong here. The code below is just
|
||||||
|
a placeholder until HP-UX is fully supported. Once this gets
|
||||||
|
fixed, we need to check the unwind cursor to see if the
|
||||||
|
target is running HP-UX or Linux. We can infer that from the
|
||||||
|
.unwabi directive associated with a signal trampoline. */
|
||||||
|
#ifdef __hpux
|
||||||
|
/* HP-UX passes the address of ucontext_t in r32: */
|
||||||
|
ret = ia64_get_stacked (c, 32, &c->sigcontext_loc, NULL);
|
||||||
|
#else
|
||||||
ret = ia64_get (c, c->sp + 0x10 + SIGFRAME_ARG2_OFF, &c->sigcontext_loc);
|
ret = ia64_get (c, c->sp + 0x10 + SIGFRAME_ARG2_OFF, &c->sigcontext_loc);
|
||||||
|
#endif
|
||||||
debug (100, "%s: sigcontext_loc=%lx (ret=%d)\n",
|
debug (100, "%s: sigcontext_loc=%lx (ret=%d)\n",
|
||||||
__FUNCTION__, c->sigcontext_loc, ret);
|
__FUNCTION__, c->sigcontext_loc, ret);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
|
Loading…
Reference in a new issue