From a42244dbec4d58c5577a84215d92c85a6c067d1a Mon Sep 17 00:00:00 2001 From: Yao Qi Date: Wed, 16 Feb 2011 14:54:42 +0000 Subject: 2011-02-16 Yao Qi * infrun.c (get_displaced_step_closure_by_addr): New. * inferior.h: Declare it. * arm-tdep.c: (arm_pc_is_thumb): Call get_displaced_step_closure_by_addr. Adjust MEMADDR if it returns non-NULL. --- gdb/infrun.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'gdb/infrun.c') diff --git a/gdb/infrun.c b/gdb/infrun.c index dd26af3..274082d 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -1078,6 +1078,24 @@ add_displaced_stepping_state (int pid) return state; } +/* If inferior is in displaced stepping, and ADDR equals to starting address + of copy area, return corresponding displaced_step_closure. Otherwise, + return NULL. */ + +struct displaced_step_closure* +get_displaced_step_closure_by_addr (CORE_ADDR addr) +{ + struct displaced_step_inferior_state *displaced + = get_displaced_stepping_state (ptid_get_pid (inferior_ptid)); + + /* If checking the mode of displaced instruction in copy area. */ + if (displaced && !ptid_equal (displaced->step_ptid, null_ptid) + && (displaced->step_copy == addr)) + return displaced->step_closure; + + return NULL; +} + /* Remove the displaced stepping state of process PID. */ static void -- cgit v1.1