Skip to content

Commit

Permalink
server/gdb_server: Handle events if first target is unavailable
Browse files Browse the repository at this point in the history
When a target in an SMP group is unavailable, the gdb layer might get an
event for a different target in that SMP group, but not one that is the
primary target for that gdb connection. So propagate events if they're
for any of the targets in the SMP group, not just if it's for the first
one in that group.

Change-Id: I8d6738762acc7c0aef96f56ce2cb7f2eeb233b33
Signed-off-by: Tim Newsome <[email protected]>
  • Loading branch information
timsifive committed Sep 27, 2023
1 parent b5e57e1 commit 75a1d83
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions src/server/gdb_server.c
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,22 @@ struct target *get_available_target_from_connection(struct connection *connectio
return target;
}

/** Return true iff the given connection includes the given target. */
static bool gdb_connection_includes_target(struct connection *connection, struct target *target)
{
struct gdb_service *gdb_service = connection->service->priv;
struct target *service_target = gdb_service->target;
if (service_target->smp) {
struct target_list *tlist;
foreach_smp_target(tlist, service_target->smp_targets) {
struct target *t = tlist->target;
if (t == target)
return true;
}
}
return service_target == target;
}

static int gdb_last_signal(struct target *target)
{
switch (target->debug_reason) {
Expand Down Expand Up @@ -988,9 +1004,9 @@ static int gdb_target_callback_event_handler(struct target *target,
enum target_event event, void *priv)
{
struct connection *connection = priv;
struct target *gdb_target = get_available_target_from_connection(connection);

if (gdb_target != target)
/* Propagate this event if it's for any of the targets on this gdb connection. */
if (!gdb_connection_includes_target(connection, target))
return ERROR_OK;

switch (event) {
Expand Down

0 comments on commit 75a1d83

Please sign in to comment.