1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-05-28 07:12:37 +02:00

ARM: fix with-signal-frame local unw_resume()

Make sure that the `sigcontext_addr' cursor member is pointing to the
`struct sigcontext' as expected in arm_local_resume().
This commit is contained in:
Tommi Rantala 2012-08-10 11:39:17 +03:00
parent 14fc15928b
commit 5738bac171

View file

@ -1,6 +1,7 @@
/* libunwind - a platform-independent unwind library /* libunwind - a platform-independent unwind library
Copyright (C) 2008 CodeSourcery Copyright (C) 2008 CodeSourcery
Copyright 2011 Linaro Limited Copyright 2011 Linaro Limited
Copyright (C) 2012 Tommi Rantala <tt.rantala@gmail.com>
This file is part of libunwind. This file is part of libunwind.
@ -111,7 +112,6 @@ unw_handle_signal_frame (unw_cursor_t *cursor)
c->sigcontext_format = ARM_SCF_LINUX_OLD_SIGFRAME; c->sigcontext_format = ARM_SCF_LINUX_OLD_SIGFRAME;
sc_addr = sp_addr; sc_addr = sp_addr;
} }
c->sigcontext_addr = sp_addr;
} }
else if (ret == 2) else if (ret == 2)
{ {
@ -120,18 +120,19 @@ unw_handle_signal_frame (unw_cursor_t *cursor)
if (sp == sp_addr + 8) if (sp == sp_addr + 8)
{ {
c->sigcontext_format = ARM_SCF_LINUX_OLD_RT_SIGFRAME; c->sigcontext_format = ARM_SCF_LINUX_OLD_RT_SIGFRAME;
c->sigcontext_addr = sp_addr + 8 + sizeof (siginfo_t); sc_addr = sp_addr + 8 + sizeof (siginfo_t) + LINUX_UC_MCONTEXT_OFF;
} }
else else
{ {
c->sigcontext_format = ARM_SCF_LINUX_RT_SIGFRAME; c->sigcontext_format = ARM_SCF_LINUX_RT_SIGFRAME;
c->sigcontext_addr = sp_addr + sizeof (siginfo_t); sc_addr = sp_addr + sizeof (siginfo_t) + LINUX_UC_MCONTEXT_OFF;
} }
sc_addr = c->sigcontext_addr + LINUX_UC_MCONTEXT_OFF;
} }
else else
return -UNW_EUNSPEC; return -UNW_EUNSPEC;
c->sigcontext_addr = sc_addr;
/* Update the dwarf cursor. /* Update the dwarf cursor.
Set the location of the registers to the corresponding addresses of the Set the location of the registers to the corresponding addresses of the
uc_mcontext / sigcontext structure contents. */ uc_mcontext / sigcontext structure contents. */