}
}
-const Jim_Nvp nvp_target_event[] = {
+static const Jim_Nvp nvp_target_event[] = {
{ .value = TARGET_EVENT_OLD_gdb_program_config , .name = "old-gdb_program_config" },
{ .value = TARGET_EVENT_OLD_pre_resume , .name = "old-pre_resume" },
static int target_continous_poll = 1;
/* read a u32 from a buffer in target memory endianness */
-u32 target_buffer_get_u32(target_t *target, u8 *buffer)
+u32 target_buffer_get_u32(target_t *target, const u8 *buffer)
{
if (target->endianness == TARGET_LITTLE_ENDIAN)
return le_to_h_u32(buffer);
}
/* read a u16 from a buffer in target memory endianness */
-u16 target_buffer_get_u16(target_t *target, u8 *buffer)
+u16 target_buffer_get_u16(target_t *target, const u8 *buffer)
{
if (target->endianness == TARGET_LITTLE_ENDIAN)
return le_to_h_u16(buffer);
}
/* read a u8 from a buffer in target memory endianness */
-u8 target_buffer_get_u8(target_t *target, u8 *buffer)
+u8 target_buffer_get_u8(target_t *target, const u8 *buffer)
{
return *buffer & 0x0ff;
}
*buffer = value;
}
+/* return a pointer to a configured target; id is name or number */
+target_t *get_target(const char *id)
+{
+ target_t *target;
+ char *endptr;
+ int num;
+
+ /* try as tcltarget name */
+ for (target = all_targets; target; target = target->next) {
+ if (target->cmd_name == NULL)
+ continue;
+ if (strcmp(id, target->cmd_name) == 0)
+ return target;
+ }
+
+ /* no match, try as number */
+ num = strtoul(id, &endptr, 0);
+ if (*endptr != 0)
+ return NULL;
+
+ for (target = all_targets; target; target = target->next) {
+ if (target->target_number == num)
+ return target;
+ }
+
+ return NULL;
+}
+
/* returns a pointer to the n-th configured target */
-target_t* get_target_by_num(int num)
+static target_t *get_target_by_num(int num)
{
target_t *target = all_targets;
return ERROR_FAIL;
}
+ if (size == 0) {
+ return ERROR_OK;
+ }
+
if ((address + size - 1) < address)
{
/* GDB can request this when e.g. PC is 0xfffffffc*/
return ERROR_FAIL;
}
+ if (size == 0) {
+ return ERROR_OK;
+ }
+
if ((address + size - 1) < address)
{
/* GDB can request this when e.g. PC is 0xfffffffc*/
static int handle_targets_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
{
- char *cp;
target_t *target = all_targets;
if (argc == 1)
{
- /* try as tcltarget name */
- for( target = all_targets ; target ; target = target->next ){
- if( target->cmd_name ){
- if( 0 == strcmp( args[0], target->cmd_name ) ){
- /* MATCH */
- goto Match;
- }
- }
- }
- /* no match, try as number */
-
- int num = strtoul(args[0], &cp, 0 );
- if( *cp != 0 ){
- /* then it was not a number */
- command_print( cmd_ctx, "Target: %s unknown, try one of:\n", args[0] );
- goto DumpTargets;
- }
-
- target = get_target_by_num( num );
- if( target == NULL ){
+ target = get_target(args[0]);
+ if (target == NULL) {
command_print(cmd_ctx,"Target: %s is unknown, try one of:\n", args[0] );
goto DumpTargets;
}
- Match:
+
cmd_ctx->current_target = target->target_number;
return ERROR_OK;
}
if ((i%line_modulo == line_modulo-1) || (i == count - 1))
{
- command_print(cmd_ctx, output);
+ command_print(cmd_ctx, "%s", output);
output_len = 0;
}
}
}
for (i=0; i<count; i++)
{
- int retval;
- switch (wordsize)
- {
- case 4:
- retval = target->type->write_memory(target, address + i*wordsize, 4, 1, value_buf);
- break;
- case 2:
- retval = target->type->write_memory(target, address + i*wordsize, 2, 1, value_buf);
- break;
- case 1:
- retval = target->type->write_memory(target, address + i*wordsize, 1, 1, value_buf);
- break;
- default:
- return ERROR_OK;
- }
- keep_alive();
-
- if (retval!=ERROR_OK)
- {
+ int retval = target->type->write_memory(target,
+ address + i * wordsize, wordsize, 1, value_buf);
+ if (ERROR_OK != retval)
return retval;
- }
+ keep_alive();
}
return ERROR_OK;
if (retval==ERROR_OK)
{
- command_print(cmd_ctx, "dumped %"PRIi64" byte in %s", fileio.size, duration_text);
+ command_print(cmd_ctx, "dumped %lld byte in %s",
+ fileio.size, duration_text);
free(duration_text);
}
}
else
{
- command_print(cmd_ctx, "breakpoint added at address 0x%8.8x", strtoul(args[0], NULL, 0));
+ command_print(cmd_ctx, "breakpoint added at address 0x%8.8lx",
+ strtoul(args[0], NULL, 0));
}
}
else