diff options
author | Eugene Tarassov | 2015-05-13 20:22:12 +0000 |
---|---|---|
committer | Eugene Tarassov | 2015-05-13 20:22:12 +0000 |
commit | e476a6d4e0e1f7d576e2af2fde47642285fb1e27 (patch) | |
tree | 5c5627a4873de5bf2e01eae784ca90744f91d374 | |
parent | c880d77544fb58285a3e18d53412f94b2bae2222 (diff) | |
download | org.eclipse.tcf.agent-e476a6d4e0e1f7d576e2af2fde47642285fb1e27.tar.gz org.eclipse.tcf.agent-e476a6d4e0e1f7d576e2af2fde47642285fb1e27.tar.xz org.eclipse.tcf.agent-e476a6d4e0e1f7d576e2af2fde47642285fb1e27.zip |
TCF Agent: Windows: added support for reading registers while the thread is running
-rw-r--r-- | agent/system/Windows/tcf/context-win32.c | 5 | ||||
-rw-r--r-- | agent/tcf/services/runctrl.c | 4 |
2 files changed, 5 insertions, 4 deletions
diff --git a/agent/system/Windows/tcf/context-win32.c b/agent/system/Windows/tcf/context-win32.c index ccbac0ff..68be8360 100644 --- a/agent/system/Windows/tcf/context-win32.c +++ b/agent/system/Windows/tcf/context-win32.c @@ -209,11 +209,10 @@ static int log_error(const char * fn, int ok) { static void get_registers(Context * ctx) { ContextExtensionWin32 * ext = EXT(ctx); - if (ext->regs->ContextFlags) return; + if (ctx->stopped && ext->regs->ContextFlags) return; assert(!ctx->exited); assert(context_has_state(ctx)); - assert(ctx->stopped); ext->regs->ContextFlags = CONTEXT_ALL; if (GetThreadContext(ext->handle, ext->regs) == 0) { @@ -632,6 +631,7 @@ static Context * add_thread(Context * prs, pid_t pid, DWORD thread, DebugState * ext->debug_state = state; ctx->mem = prs; ctx->big_endian = prs->big_endian; + ctx->reg_access |= REG_ACCESS_RD_RUNNING; (ctx->parent = prs)->ref_count++; list_add_last(&ctx->cldl, &prs->children); link_context(ctx); @@ -721,6 +721,7 @@ static void debug_event_handler(DebugEvent * debug_event) { ext->debug_state = debug_state; ctx->mem = prs; ctx->big_endian = prs->big_endian; + ctx->reg_access |= REG_ACCESS_RD_RUNNING; (ctx->parent = prs)->ref_count++; list_add_last(&ctx->cldl, &prs->children); link_context(ctx); diff --git a/agent/tcf/services/runctrl.c b/agent/tcf/services/runctrl.c index 3598a9c0..00854ce3 100644 --- a/agent/tcf/services/runctrl.c +++ b/agent/tcf/services/runctrl.c @@ -257,11 +257,11 @@ static void write_context(OutputStream * out, Context * ctx) { json_write_string(out, "RegAccessTypes"); write_stream(out, ':'); write_stream(out, '['); - if (ctx->mem_access & REG_ACCESS_RD_RUNNING) { + if (ctx->reg_access & REG_ACCESS_RD_RUNNING) { if (cnt++) write_stream(out, ','); json_write_string(out, "rd-running"); } - if (ctx->mem_access & REG_ACCESS_WR_RUNNING) { + if (ctx->reg_access & REG_ACCESS_WR_RUNNING) { if (cnt++) write_stream(out, ','); json_write_string(out, "wr-running"); } |