Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEugene Tarassov2015-05-13 20:22:12 +0000
committerEugene Tarassov2015-05-13 20:22:12 +0000
commite476a6d4e0e1f7d576e2af2fde47642285fb1e27 (patch)
tree5c5627a4873de5bf2e01eae784ca90744f91d374
parentc880d77544fb58285a3e18d53412f94b2bae2222 (diff)
downloadorg.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.c5
-rw-r--r--agent/tcf/services/runctrl.c4
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");
}

Back to the top