summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arm/Gstep.c7
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;
}