summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
f232512)
Change-Id: Iab2966be8dd145f33f41902e2d55afe03d0f5856
Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-on: http://openocd.zylin.com/857
Tested-by: jenkins
Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
int closed;
int busy;
int noack_mode;
int closed;
int busy;
int noack_mode;
- bool sync; /* set flag to true if you want the next stepi to return immediately.
- allowing GDB to pick up a fresh set of register values from the target
- without modifying the target state. */
+ /* set flag to true if you want the next stepi to return immediately.
+ * allowing GDB to pick up a fresh set of register values from the target
+ * without modifying the target state. */
+ bool sync;
/* We delay reporting memory write errors until next step/continue or memory
* write. This improves performance of gdb load significantly as the GDB packet
* can be replied immediately and a new GDB packet will be ready without delay
/* We delay reporting memory write errors until next step/continue or memory
* write. This improves performance of gdb load significantly as the GDB packet
* can be replied immediately and a new GDB packet will be ready without delay
- * (ca. 10% or so...).
- */
+ * (ca. 10% or so...). */
return 0x0; /* no signal... shouldn't happen */
default:
LOG_USER("undefined debug reason %d - target needs reset",
return 0x0; /* no signal... shouldn't happen */
default:
LOG_USER("undefined debug reason %d - target needs reset",
char local_buffer[1024];
local_buffer[0] = '$';
if ((size_t)len + 4 <= sizeof(local_buffer)) {
char local_buffer[1024];
local_buffer[0] = '$';
if ((size_t)len + 4 <= sizeof(local_buffer)) {
- /* performance gain on smaller packets by only a single call to gdb_write()
- **/
+ /* performance gain on smaller packets by only a single call to gdb_write() */
memcpy(local_buffer + 1, buffer, len++);
local_buffer[len++] = '#';
local_buffer[len++] = DIGITS[(my_checksum >> 4) & 0xf];
memcpy(local_buffer + 1, buffer, len++);
local_buffer[len++] = '#';
local_buffer[len++] = DIGITS[(my_checksum >> 4) & 0xf];
return retval;
} else {
/* larger packets are transmitted directly from caller supplied buffer
return retval;
} else {
/* larger packets are transmitted directly from caller supplied buffer
- by several calls to gdb_write() to avoid dynamic allocation */
+ * by several calls to gdb_write() to avoid dynamic allocation */
local_buffer[1] = '#';
local_buffer[2] = DIGITS[(my_checksum >> 4) & 0xf];
local_buffer[3] = DIGITS[my_checksum & 0xf];
local_buffer[1] = '#';
local_buffer[2] = DIGITS[(my_checksum >> 4) & 0xf];
local_buffer[3] = DIGITS[my_checksum & 0xf];
gdb_putback_char(connection, reply);
return ERROR_OK;
} else {
gdb_putback_char(connection, reply);
return ERROR_OK;
} else {
- LOG_ERROR(
- "unknown character(1) 0x%2.2x in reply, dropping connection", reply);
+ LOG_ERROR("unknown character(1) 0x%2.2x in reply, dropping connection", reply);
gdb_con->closed = 1;
return ERROR_SERVER_REMOTE_CLOSED;
}
gdb_con->closed = 1;
return ERROR_SERVER_REMOTE_CLOSED;
}
i++;
if (character == '#') {
/* Danger! character can be '#' when esc is
i++;
if (character == '#') {
/* Danger! character can be '#' when esc is
- * used so we need an explicit boolean for done here.
- */
+ * used so we need an explicit boolean for done here. */
int checksum_ok = 0;
/* explicit code expansion here to get faster inlined code in -O3 by not
int checksum_ok = 0;
/* explicit code expansion here to get faster inlined code in -O3 by not
- * calculating checksum
- */
+ * calculating checksum */
if (gdb_con->noack_mode) {
retval = fetch_packet(connection, &checksum_ok, 1, len, buffer);
if (retval != ERROR_OK)
if (gdb_con->noack_mode) {
retval = fetch_packet(connection, &checksum_ok, 1, len, buffer);
if (retval != ERROR_OK)
struct flash_bank *p;
retval = get_flash_bank_by_num(i, &p);
if (retval != ERROR_OK) {
struct flash_bank *p;
retval = get_flash_bank_by_num(i, &p);
if (retval != ERROR_OK) {
- LOG_ERROR(
- "Connect failed. Consider setting up a gdb-attach event for the target to prepare target for GDB connect, or use 'gdb_memory_map disable'.");
+ LOG_ERROR("Connect failed. Consider setting up a gdb-attach event for the target " \
+ "to prepare target for GDB connect, or use 'gdb_memory_map disable'.");
packet_size--;
if (packet_size % 2) {
packet_size--;
if (packet_size % 2) {
- LOG_WARNING(
- "GDB set_registers packet with uneven characters received, dropping connection");
+ LOG_WARNING("GDB set_registers packet with uneven characters received, dropping connection");
return ERROR_SERVER_REMOTE_CLOSED;
}
return ERROR_SERVER_REMOTE_CLOSED;
}
if (packet[0] == 'c') {
LOG_DEBUG("continue");
if (packet[0] == 'c') {
LOG_DEBUG("continue");
- retval = target_resume(target, current, address, 0, 0); /* resume at current
- *address, don't handle
- *breakpoints, not debugging
- **/
+ /* resume at current address, don't handle breakpoints, not debugging */
+ retval = target_resume(target, current, address, 0, 0);
} else if (packet[0] == 's') {
LOG_DEBUG("step");
/* step at current or address, don't handle breakpoints */
} else if (packet[0] == 's') {
LOG_DEBUG("step");
/* step at current or address, don't handle breakpoints */
addr = strtoul(packet, &separator, 16);
if (*separator != ',') {
addr = strtoul(packet, &separator, 16);
if (*separator != ',') {
- LOG_ERROR(
- "incomplete read memory packet received, dropping connection");
+ LOG_ERROR("incomplete read memory packet received, dropping connection");
return ERROR_SERVER_REMOTE_CLOSED;
}
return ERROR_SERVER_REMOTE_CLOSED;
}
/* process the flashing buffer. No need to erase as GDB
* always issues a vFlashErase first. */
target_call_event_callbacks(gdb_service->target,
/* process the flashing buffer. No need to erase as GDB
* always issues a vFlashErase first. */
target_call_event_callbacks(gdb_service->target,
- TARGET_EVENT_GDB_FLASH_WRITE_START);
- result =
- flash_write(gdb_service->target, gdb_connection->vflash_image, &written, 0);
+ TARGET_EVENT_GDB_FLASH_WRITE_START);
+ result = flash_write(gdb_service->target, gdb_connection->vflash_image, &written, 0);
target_call_event_callbacks(gdb_service->target, TARGET_EVENT_GDB_FLASH_WRITE_END);
if (result != ERROR_OK) {
if (result == ERROR_FLASH_DST_OUT_OF_BANK)
target_call_event_callbacks(gdb_service->target, TARGET_EVENT_GDB_FLASH_WRITE_END);
if (result != ERROR_OK) {
if (result == ERROR_FLASH_DST_OUT_OF_BANK)
{
struct gdb_service *gdb_service = connection->service->priv;
{
struct gdb_service *gdb_service = connection->service->priv;
- target_call_event_callbacks(gdb_service->target,
- TARGET_EVENT_GDB_DETACH);
+ target_call_event_callbacks(gdb_service->target, TARGET_EVENT_GDB_DETACH);
return gdb_put_packet(connection, "OK", 2);
}
return gdb_put_packet(connection, "OK", 2);
}
char sig_reply[4];
snprintf(sig_reply, 4, "T%2.2x", 2);
gdb_put_packet(connection, sig_reply, 3);
char sig_reply[4];
snprintf(sig_reply, 4, "T%2.2x", 2);
gdb_put_packet(connection, sig_reply, 3);
}
static int gdb_input_inner(struct connection *connection)
}
static int gdb_input_inner(struct connection *connection)
case 'T': /* Is thread alive? */
gdb_thread_packet(connection, packet, packet_size);
break;
case 'T': /* Is thread alive? */
gdb_thread_packet(connection, packet, packet_size);
break;
- case 'H': /* Set current thread ( 'c' for step and continue, 'g' for
- * all other operations ) */
+ case 'H': /* Set current thread ( 'c' for step and continue,
+ * 'g' for all other operations ) */
gdb_thread_packet(connection, packet, packet_size);
break;
case 'q':
gdb_thread_packet(connection, packet, packet_size);
break;
case 'q':
LOG_ERROR("Memory write failure!");
/* now that we have reported the memory write error,
LOG_ERROR("Memory write failure!");
/* now that we have reported the memory write error,
- *we can clear the condition */
+ * we can clear the condition */
gdb_con->mem_write_error = false;
}
gdb_con->mem_write_error = false;
}
retval = gdb_step_continue_packet(connection, packet, packet_size);
if (retval != ERROR_OK) {
/* we'll never receive a halted
retval = gdb_step_continue_packet(connection, packet, packet_size);
if (retval != ERROR_OK) {
/* we'll never receive a halted
- *condition... issue a false one..
- **/
+ * condition... issue a false one..
+ */
gdb_frontend_halted(target, connection);
}
}
gdb_frontend_halted(target, connection);
}
}
/* handle extended restart packet */
breakpoint_clear_target(gdb_service->target);
watchpoint_clear_target(gdb_service->target);
/* handle extended restart packet */
breakpoint_clear_target(gdb_service->target);
watchpoint_clear_target(gdb_service->target);
- command_run_linef(connection->cmd_ctx,
- "ocd_gdb_restart %s",
- target_name(target));
+ command_run_linef(connection->cmd_ctx, "ocd_gdb_restart %s",
+ target_name(target));
/* info rtos parts */
gdb_thread_packet(connection, packet, packet_size);
gdb_put_packet(connection, "OK", 2);
break;
case 'j':
/* info rtos parts */
gdb_thread_packet(connection, packet, packet_size);
gdb_put_packet(connection, "OK", 2);
break;
case 'j':
- /* packet supported only by smp target i.e cortex_a.c*/
+ /* packet supported only by smp target i.e cortex_a.c*/
/* handle smp packet replying coreid played to gbd */
gdb_read_smp_packet(connection, packet, packet_size);
break;
case 'J':
/* handle smp packet replying coreid played to gbd */
gdb_read_smp_packet(connection, packet, packet_size);
break;
case 'J':
- /* packet supported only by smp target i.e cortex_a.c */
- /* handle smp packet setting coreid to be played at next
- * resume to gdb */
+ /* packet supported only by smp target i.e cortex_a.c */
+ /* handle smp packet setting coreid to be played at next
+ * resume to gdb */
gdb_write_smp_packet(connection, packet, packet_size);
break;
gdb_write_smp_packet(connection, packet, packet_size);
break;
target_call_event_callbacks(target, TARGET_EVENT_GDB_HALT);
gdb_con->ctrl_c = 0;
} else {
target_call_event_callbacks(target, TARGET_EVENT_GDB_HALT);
gdb_con->ctrl_c = 0;
} else {
- LOG_INFO(
- "The target is not running when halt was requested, stopping GDB.");
+ LOG_INFO("The target is not running when halt was requested, stopping GDB.");
target_call_event_callbacks(target, TARGET_EVENT_GDB_HALT);
}
}
target_call_event_callbacks(target, TARGET_EVENT_GDB_HALT);
}
}
Linking to existing account procedure
If you already have an account and want to add another login method
you
MUST first sign in with your existing account and
then change URL to read
https://review.openocd.org/login/?link
to get to this page again but this time it'll work for linking. Thank you.
SSH host keys fingerprints
1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=.. |
|+o.. . |
|*.o . . |
|+B . . . |
|Bo. = o S |
|Oo.+ + = |
|oB=.* = . o |
| =+=.+ + E |
|. .=o . o |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)