/* target behaviour on gdb detach */
enum gdb_detach_mode detach_mode = GDB_DETACH_RESUME;
+/* number of gdb connections, mainly to supress gdb related debugging spam
+ * in helper/log.c when no gdb connections are actually active */
+int gdb_actual_connections;
+
/* set if we are sending a memory map to gdb
* via qXfer:memory-map:read packet */
/* enabled by default*/
if (initial_ack != '+')
gdb_putback_char(connection, initial_ack);
target_call_event_callbacks(gdb_service->target, TARGET_EVENT_GDB_ATTACH );
+
+ gdb_actual_connections++;
+
return ERROR_OK;
}
gdb_service_t *gdb_service = connection->service->priv;
gdb_connection_t *gdb_connection = connection->priv;
+ gdb_actual_connections--;
+
/* see if an image built with vFlash commands is left */
if (gdb_connection->vflash_image)
{
LOG_DEBUG("-");
#endif
- if ((retval = target->type->get_gdb_reg_list(target, ®_list, ®_list_size)) != ERROR_OK)
+ if ((retval = target_get_gdb_reg_list(target, ®_list, ®_list_size)) != ERROR_OK)
{
return gdb_error(connection, retval);
}
return ERROR_SERVER_REMOTE_CLOSED;
}
- if ((retval = target->type->get_gdb_reg_list(target, ®_list, ®_list_size)) != ERROR_OK)
+ if ((retval = target_get_gdb_reg_list(target, ®_list, ®_list_size)) != ERROR_OK)
{
return gdb_error(connection, retval);
}
LOG_DEBUG("-");
#endif
- if ((retval = target->type->get_gdb_reg_list(target, ®_list, ®_list_size)) != ERROR_OK)
+ if ((retval = target_get_gdb_reg_list(target, ®_list, ®_list_size)) != ERROR_OK)
{
return gdb_error(connection, retval);
}
LOG_DEBUG("-");
- if ((retval = target->type->get_gdb_reg_list(target, ®_list, ®_list_size)) != ERROR_OK)
+ if ((retval = target_get_gdb_reg_list(target, ®_list, ®_list_size)) != ERROR_OK)
{
return gdb_error(connection, retval);
}
else if (packet[0] == 's')
{
LOG_DEBUG("step");
- retval=target->type->step(target, current, address, 0); /* step at current or address, don't handle breakpoints */
+ /* step at current or address, don't handle breakpoints */
+ retval = target_step(target, current, address, 0);
}
return retval;
}
if (gdb_port == 0 && server_use_pipes == 0)
{
- LOG_WARNING("no gdb port specified, using default port 3333");
+ LOG_DEBUG("no gdb port specified, using default port 3333");
gdb_port = 3333;
}
add_service("gdb", CONNECTION_PIPE, 0, 1, gdb_new_connection, gdb_input, gdb_connection_closed, gdb_service);
- LOG_DEBUG("gdb service for target %s using pipes", target->type->name);
+ LOG_DEBUG("gdb service for target %s using pipes",
+ target_get_name(target));
}
else
{
add_service("gdb", CONNECTION_TCP, gdb_port + target->target_number, 1, gdb_new_connection, gdb_input, gdb_connection_closed, gdb_service);
- LOG_DEBUG("gdb service for target %s at port %i", target->type->name, gdb_port + target->target_number);
+ LOG_DEBUG("gdb service for target %s at port %i",
+ target_get_name(target),
+ gdb_port + target->target_number);
target = target->next;
}
}
register_command(command_context, NULL, "gdb_port", handle_gdb_port_command,
COMMAND_ANY, "daemon configuration command gdb_port");
register_command(command_context, NULL, "gdb_detach", handle_gdb_detach_command,
- COMMAND_CONFIG, "");
+ COMMAND_CONFIG, "resume/reset/halt/nothing - "
+ "specify behavior when GDB detaches from the target");
register_command(command_context, NULL, "gdb_memory_map", handle_gdb_memory_map_command,
COMMAND_CONFIG, "enable or disable memory map");
register_command(command_context, NULL, "gdb_flash_program", handle_gdb_flash_program_command,
COMMAND_CONFIG, "enable or disable flash program");
register_command(command_context, NULL, "gdb_report_data_abort", handle_gdb_report_data_abort_command,
- COMMAND_CONFIG, "enable or disable report data");
+ COMMAND_CONFIG, "enable or disable reporting data aborts");
register_command(command_context, NULL, "gdb_breakpoint_override", handle_gdb_breakpoint_override_command,
- COMMAND_EXEC, "hard/soft/disable - force breakpoint type for gdb 'break' commands."
- "The raison d'etre for this option is to support GDB GUI's without "
- "a hard/soft breakpoint concept where the default OpenOCD behaviour "
- "is not sufficient");
+ COMMAND_EXEC, "hard/soft/disable - force breakpoint type for gdb 'break' commands.");
return ERROR_OK;
}