From aeca9174293ad20ee772e0f485996a9ebe7c059c Mon Sep 17 00:00:00 2001 From: midipix Date: Sun, 22 Sep 2019 20:26:21 +0000 Subject: mgdb: added winnt_supports_multi_process(), winnt_resume_process(). --- overlay/mgdb/gdb/winnt-nat.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/overlay/mgdb/gdb/winnt-nat.c b/overlay/mgdb/gdb/winnt-nat.c index 4a27c40..3637c4e 100644 --- a/overlay/mgdb/gdb/winnt-nat.c +++ b/overlay/mgdb/gdb/winnt-nat.c @@ -1105,6 +1105,26 @@ static void winnt_resume_one(ptid_t ptid, int step, enum gdb_signal sig) } } +static void winnt_resume_process(pid_t pid, int step, enum gdb_signal sig) +{ + struct winnt_process * pdbg; + struct winnt_thread * thread; + ptid_t ptid; + + if (!(pdbg = winnt_process_record(pid))) + return; + + for (thread=pdbg->threads; thread; thread=thread->next) { + ptid.pid = pdbg->syspid; + ptid.tid = thread->tid; + ptid.lwp = 0; + + (thread->tid == inferior_ptid.tid) + ? winnt_resume_one(ptid,step,sig) + : winnt_resume_one(ptid,0,sig); + } +} + static void winnt_resume_all(int step, enum gdb_signal sig) { struct winnt_process * pdbg; @@ -1136,7 +1156,9 @@ static void winnt_resume ( { ptid_equal(ptid,minus_one_ptid) ? winnt_resume_all(step,sig) - : winnt_resume_one(ptid,step,sig); + : ptid.tid + ? winnt_resume_one(ptid,step,sig) + : winnt_resume_process(ptid.pid,step,sig); } static void winnt_kill (struct target_ops * t) @@ -1228,6 +1250,11 @@ static char * winnt_pid_to_str (struct target_ops * t, ptid_t ptid) return outbuf; } +static int winnt_supports_multi_process(struct target_ops * t) +{ + return 1; +} + static int winnt_perk_init(void) { char * argv[2]; @@ -1329,6 +1356,8 @@ static target_ops * winnt_target_alloc (void) t->to_interrupt = winnt_interrupt; t->to_get_ada_task_ptid = winnt_get_ada_task_ptid; + t->to_supports_multi_process = winnt_supports_multi_process; + x86_use_watchpoints(t); winnt_init_dr_low(); -- cgit v1.2.3