summaryrefslogtreecommitdiff
path: root/src/mi/Gget_proc_name.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mi/Gget_proc_name.c')
-rw-r--r--src/mi/Gget_proc_name.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/mi/Gget_proc_name.c b/src/mi/Gget_proc_name.c
index 7251c591..bc3d23d2 100644
--- a/src/mi/Gget_proc_name.c
+++ b/src/mi/Gget_proc_name.c
@@ -100,7 +100,15 @@ unw_get_proc_name (unw_cursor_t *cursor, char *buf, size_t buf_len,
unw_word_t *offp)
{
struct cursor *c = (struct cursor *) cursor;
-
- return get_proc_name (tdep_get_as (c), tdep_get_ip (c), buf, buf_len, offp,
- tdep_get_as_arg (c));
+ unw_word_t ip;
+ int error;
+
+ ip = tdep_get_ip (c);
+ if (c->dwarf.use_prev_instr)
+ --ip;
+ error = get_proc_name (tdep_get_as (c), ip, buf, buf_len, offp,
+ tdep_get_as_arg (c));
+ if (c->dwarf.use_prev_instr && offp != NULL && error == 0)
+ *offp += 1;
+ return error;
}