Brad Bishop | 1932369 | 2019-04-05 15:28:33 -0400 | [diff] [blame^] | 1 | From f6866b9e4a6341c50eb1d923dbf48eca2ca40140 Mon Sep 17 00:00:00 2001 |
| 2 | From: Khem Raj <raj.khem@gmail.com> |
| 3 | Date: Tue, 22 Mar 2016 16:19:29 +0000 |
| 4 | Subject: [PATCH 3/6] x86: Stub out x86_local_resume() |
| 5 | |
| 6 | its purpose seems |
| 7 | to be unwinding across signal handler boundaries, which cannot happen |
| 8 | in correct programs anyway. Replacing the whole function with |
| 9 | something like *(volatile char *)0=0; (i.e. crash), gets a working |
| 10 | libunwind |
| 11 | |
| 12 | Upstream-Status: Pending |
| 13 | Signed-off-by: Khem Raj <raj.khem@gmail.com> |
| 14 | |
| 15 | --- |
| 16 | src/x86/Gos-linux.c | 22 +--------------------- |
| 17 | 1 file changed, 1 insertion(+), 21 deletions(-) |
| 18 | |
| 19 | diff --git a/src/x86/Gos-linux.c b/src/x86/Gos-linux.c |
| 20 | index fb9a5e3..c25ae0c 100644 |
| 21 | --- a/src/x86/Gos-linux.c |
| 22 | +++ b/src/x86/Gos-linux.c |
| 23 | @@ -284,27 +284,7 @@ x86_r_uc_addr (ucontext_t *uc, int reg) |
| 24 | HIDDEN int |
| 25 | x86_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg) |
| 26 | { |
| 27 | - struct cursor *c = (struct cursor *) cursor; |
| 28 | - ucontext_t *uc = c->uc; |
| 29 | - |
| 30 | - /* Ensure c->pi is up-to-date. On x86, it's relatively common to be |
| 31 | - missing DWARF unwind info. We don't want to fail in that case, |
| 32 | - because the frame-chain still would let us do a backtrace at |
| 33 | - least. */ |
| 34 | - dwarf_make_proc_info (&c->dwarf); |
| 35 | - |
| 36 | - if (unlikely (c->sigcontext_format != X86_SCF_NONE)) |
| 37 | - { |
| 38 | - struct sigcontext *sc = (struct sigcontext *) c->sigcontext_addr; |
| 39 | - |
| 40 | - Debug (8, "resuming at ip=%x via sigreturn(%p)\n", c->dwarf.ip, sc); |
| 41 | - x86_sigreturn (sc); |
| 42 | - } |
| 43 | - else |
| 44 | - { |
| 45 | - Debug (8, "resuming at ip=%x via setcontext()\n", c->dwarf.ip); |
| 46 | - setcontext (uc); |
| 47 | - } |
| 48 | + *(volatile char *)0=0; |
| 49 | return -UNW_EINVAL; |
| 50 | } |
| 51 | |
| 52 | -- |
| 53 | 2.20.1 |
| 54 | |