summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kostik@pooma.home>2010-04-14 12:10:34 +0300
committerKonstantin Belousov <kostik@pooma.home>2010-04-14 12:10:34 +0300
commit0d311ea1617fd0ebff52dfacc85746fcc165bb10 (patch)
tree21a4aee57cc7d7ef93cce90f4e9772c4f260e59e
parent34b064bf2233ec8c9223786f4bc714585bbce4f7 (diff)
downloadlibunwind-0d311ea1617fd0ebff52dfacc85746fcc165bb10.tar.gz
Add abort() after sigreturn calls
-rw-r--r--src/x86/Gos-freebsd.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/x86/Gos-freebsd.c b/src/x86/Gos-freebsd.c
index 6a6406e7..928955b4 100644
--- a/src/x86/Gos-freebsd.c
+++ b/src/x86/Gos-freebsd.c
@@ -346,11 +346,13 @@ x86_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg)
if (c->sigcontext_format == X86_SCF_NONE) {
Debug (8, "resuming at ip=%x via setcontext()\n", c->dwarf.ip);
setcontext (uc);
+ abort();
} else if (c->sigcontext_format == X86_SCF_FREEBSD_SIGFRAME) {
struct sigcontext *sc = (struct sigcontext *) c->sigcontext_addr;
Debug (8, "resuming at ip=%x via sigreturn(%p)\n", c->dwarf.ip, sc);
sigreturn((ucontext_t *)((const char *)sc + FREEBSD_UC_MCONTEXT_OFF));
+ abort();
} else {
Debug (8, "resuming at ip=%x for sigcontext format %d not implemented\n",
c->dwarf.ip, c->sigcontext_format);