diff options
author | Yichao Yu <yyc1992@gmail.com> | 2017-10-31 11:52:22 -0400 |
---|---|---|
committer | Dave Watson <davejwatson@fb.com> | 2017-10-31 08:52:22 -0700 |
commit | 9e81e9efee5e2e3e295b9bfd1c9f0718a244d926 (patch) | |
tree | 343c36b3d3737213b774ed99d86b8779bd9e2796 | |
parent | 4238fa55c8a171df5dfee2d3094dbd3ed5caeef1 (diff) | |
download | libunwind-9e81e9efee5e2e3e295b9bfd1c9f0718a244d926.tar.gz |
arm: Handle non-signal frame unwind info lookup in ARM exidx unwinder (#55)
-rw-r--r-- | src/arm/Gstep.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/arm/Gstep.c b/src/arm/Gstep.c index 6679455e..ae2f10f0 100644 --- a/src/arm/Gstep.c +++ b/src/arm/Gstep.c @@ -44,13 +44,16 @@ arm_exidx_step (struct cursor *c) /* mark PC unsaved */ c->dwarf.loc[UNW_ARM_R15] = DWARF_NULL_LOC; + unw_word_t ip = c->dwarf.ip; + if (c->dwarf.use_prev_instr) + --ip; /* check dynamic info first --- it overrides everything else */ - ret = unwi_find_dynamic_proc_info (c->dwarf.as, c->dwarf.ip, &c->dwarf.pi, 1, + ret = unwi_find_dynamic_proc_info (c->dwarf.as, ip, &c->dwarf.pi, 1, c->dwarf.as_arg); if (ret == -UNW_ENOINFO) { - if ((ret = tdep_find_proc_info (&c->dwarf, c->dwarf.ip, 1)) < 0) + if ((ret = tdep_find_proc_info (&c->dwarf, ip, 1)) < 0) return ret; } |