1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2025-01-06 01:23:41 +01:00

Local resume is enabled

This commit is contained in:
esil 2010-08-02 09:17:48 -07:00
parent 08d42049e2
commit c7544f5e44
2 changed files with 6 additions and 6 deletions

View file

@ -249,11 +249,7 @@ x86_64_local_addr_space_init (void)
local_addr_space.acc.access_mem = access_mem;
local_addr_space.acc.access_reg = access_reg;
local_addr_space.acc.access_fpreg = access_fpreg;
#ifdef __linux__
local_addr_space.acc.resume = x86_64_local_resume;
#else // __linux__
local_addr_space.acc.resume = 0; // FIXME
#endif // __linux__
local_addr_space.acc.get_proc_name = get_static_proc_name;
unw_flush_cache (&local_addr_space, 0, 0);

View file

@ -48,6 +48,8 @@ my_rt_sigreturn (void *new_sp)
abort ();
}
#endif // __linux__
HIDDEN inline int
x86_64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg)
{
@ -62,11 +64,15 @@ x86_64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg)
if (unlikely (c->sigcontext_format != X86_64_SCF_NONE))
{
#ifdef __linux__
struct sigcontext *sc = (struct sigcontext *) c->sigcontext_addr;
Debug (8, "resuming at ip=%llx via sigreturn(%p)\n",
(unsigned long long) c->dwarf.ip, sc);
my_rt_sigreturn (sc);
#else // __linux__
assert(0 && "Unimplemented");
#endif // __linux__
}
else
{
@ -77,8 +83,6 @@ x86_64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg)
return -UNW_EINVAL;
}
#endif // __linux__
#endif /* !UNW_REMOTE_ONLY */
/* This routine is responsible for copying the register values in