New function displaced_step_in_progress_thread
This patch adds a new function displaced_step_in_progress_thread, which returns whether the thread is in progress of displaced stepping. gdb: 2015-11-09 Yao Qi <yao.qi@linaro.org> * infrun.c (displaced_step_in_progress_thread): New function. (handle_inferior_event_1): Call it.
This commit is contained in:
parent
be7fe1cddb
commit
c098766357
|
@ -1,3 +1,8 @@
|
|||
2015-11-09 Yao Qi <yao.qi@linaro.org>
|
||||
|
||||
* infrun.c (displaced_step_in_progress_thread): New function.
|
||||
(handle_inferior_event_1): Call it.
|
||||
|
||||
2015-11-05 Yao Qi <yao.qi@linaro.org>
|
||||
|
||||
* aarch64-tdep.c (aarch64_displaced_step_copy_insn): Call
|
||||
|
|
22
gdb/infrun.c
22
gdb/infrun.c
|
@ -1536,6 +1536,21 @@ displaced_step_in_progress_any_inferior (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Return true if thread represented by PTID is doing a displaced
|
||||
step. */
|
||||
|
||||
static int
|
||||
displaced_step_in_progress_thread (ptid_t ptid)
|
||||
{
|
||||
struct displaced_step_inferior_state *displaced;
|
||||
|
||||
gdb_assert (!ptid_equal (ptid, null_ptid));
|
||||
|
||||
displaced = get_displaced_stepping_state (ptid_get_pid (ptid));
|
||||
|
||||
return (displaced != NULL && ptid_equal (displaced->step_ptid, ptid));
|
||||
}
|
||||
|
||||
/* Return true if process PID has a thread doing a displaced step. */
|
||||
|
||||
static int
|
||||
|
@ -4946,12 +4961,10 @@ Cannot fill $_exitsignal with the correct signal number.\n"));
|
|||
{
|
||||
struct regcache *regcache = get_thread_regcache (ecs->ptid);
|
||||
struct gdbarch *gdbarch = get_regcache_arch (regcache);
|
||||
struct displaced_step_inferior_state *displaced
|
||||
= get_displaced_stepping_state (ptid_get_pid (ecs->ptid));
|
||||
|
||||
/* If checking displaced stepping is supported, and thread
|
||||
ecs->ptid is displaced stepping. */
|
||||
if (displaced && ptid_equal (displaced->step_ptid, ecs->ptid))
|
||||
if (displaced_step_in_progress_thread (ecs->ptid))
|
||||
{
|
||||
struct inferior *parent_inf
|
||||
= find_inferior_ptid (ecs->ptid);
|
||||
|
@ -4970,6 +4983,9 @@ Cannot fill $_exitsignal with the correct signal number.\n"));
|
|||
|
||||
if (ecs->ws.kind == TARGET_WAITKIND_FORKED)
|
||||
{
|
||||
struct displaced_step_inferior_state *displaced
|
||||
= get_displaced_stepping_state (ptid_get_pid (ecs->ptid));
|
||||
|
||||
/* Restore scratch pad for child process. */
|
||||
displaced_step_restore (displaced, ecs->ws.value.related_pid);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue