Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEugene Tarassov2014-05-06 18:13:52 +0000
committerEugene Tarassov2014-05-06 18:13:52 +0000
commitd137365b136b6cc7057ce683b0bc4bec63bccc69 (patch)
treeae879dd4984fb17e0ec41a72299f13384c330b23
parent71fa7b2a2c7a0723d1ea1ca85aafc14a88b6f962 (diff)
downloadorg.eclipse.tcf.agent-d137365b136b6cc7057ce683b0bc4bec63bccc69.tar.gz
org.eclipse.tcf.agent-d137365b136b6cc7057ce683b0bc4bec63bccc69.tar.xz
org.eclipse.tcf.agent-d137365b136b6cc7057ce683b0bc4bec63bccc69.zip
TCF Agent: fixed: eventpoints (breakpoints that are set by agent itself) don't work when ENABLE_SymbolsMux=1 and ENABLE_SymbolsProxy=1
-rw-r--r--agent/tcf/services/breakpoints.c31
-rw-r--r--agent/tcf/services/symbols_proxy.c2
2 files changed, 6 insertions, 27 deletions
diff --git a/agent/tcf/services/breakpoints.c b/agent/tcf/services/breakpoints.c
index 108adcd9..2170c0ef 100644
--- a/agent/tcf/services/breakpoints.c
+++ b/agent/tcf/services/breakpoints.c
@@ -140,7 +140,6 @@ struct BreakInstruction {
};
struct EvaluationArgs {
- int in_cache;
BreakpointInfo * bp;
Context * ctx;
unsigned index;
@@ -1154,45 +1153,25 @@ static void expr_cache_enter(CacheClient * client, BreakpointInfo * bp, Context
assert(!is_channel_closed(c));
run_ctrl_lock();
cache_enter_cnt++;
- args.in_cache = 1;
cache_enter(client, c, &args, sizeof(args));
cnt++;
}
l = l->next;
}
}
-#if ENABLE_LineNumbersProxy && ENABLE_SymbolsProxy
if (cnt == 0) {
LINK * l = channel_root.next;
while (l != &channel_root) {
Channel * c = chanlink2channelp(l);
if (!is_channel_closed(c)) {
- int i;
- int has_symbols = 0;
- int has_line_numbers = 0;
- for (i = 0; i < c->peer_service_cnt; i++) {
- char * nm = c->peer_service_list[i];
- if (strcmp(nm, "Symbols") == 0) has_symbols = 1;
- if (strcmp(nm, "LineNumbers") == 0) has_line_numbers = 1;
- }
- if (has_symbols && has_line_numbers) {
- run_ctrl_lock();
- cache_enter_cnt++;
- args.in_cache = 1;
- cache_enter(client, c, &args, sizeof(args));
- cnt++;
- }
+ run_ctrl_lock();
+ cache_enter_cnt++;
+ cache_enter(client, c, &args, sizeof(args));
+ cnt++;
}
l = l->next;
}
}
-#endif
- if (cnt == 0) {
- cache_enter_cnt++;
- run_ctrl_lock();
- args.in_cache = 0;
- client(&args);
- }
}
static void free_bp(BreakpointInfo * bp) {
@@ -1431,7 +1410,7 @@ static void done_evaluation(void) {
}
static void expr_cache_exit(EvaluationArgs * args) {
- if (args->in_cache) cache_exit();
+ cache_exit();
done_evaluation();
run_ctrl_unlock();
}
diff --git a/agent/tcf/services/symbols_proxy.c b/agent/tcf/services/symbols_proxy.c
index 0cb65de1..a15a7ae3 100644
--- a/agent/tcf/services/symbols_proxy.c
+++ b/agent/tcf/services/symbols_proxy.c
@@ -586,7 +586,7 @@ static void flush_symbol(LINK * l) {
}
static Channel * get_channel(SymbolsCache * syms) {
- if (is_channel_closed(syms->channel)) exception(ERR_CHANNEL_CLOSED);
+ if (is_channel_closed(syms->channel)) str_exception(ERR_SYM_NOT_FOUND, "Channel is closed");
if (!syms->service_available) str_exception(ERR_SYM_NOT_FOUND, "Symbols service not available");
return syms->channel;
}

Back to the top