- gdb server was incorrectly sending null terminator on qXfer:features:read: packet

- armv7m now sends correct gdb register packet

git-svn-id: svn://svn.berlios.de/openocd/trunk@522 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
ntfreak 2008-03-22 14:19:46 +00:00
parent ae176daac8
commit a96f96d1f0
2 changed files with 20 additions and 8 deletions

View File

@ -1616,7 +1616,7 @@ int gdb_query_packet(connection_t *connection, target_t *target, char *packet, i
return retval;
}
gdb_put_packet(connection, xml, strlen(xml) + 1);
gdb_put_packet(connection, xml, strlen(xml));
free(xml);
return ERROR_OK;

View File

@ -85,6 +85,13 @@ reg_t armv7m_gdb_dummy_fp_reg =
"GDB dummy floating-point register", armv7m_gdb_dummy_fp_value, 0, 1, 96, NULL, 0, NULL, 0
};
u8 armv7m_gdb_dummy_fps_value[] = {0, 0, 0, 0};
reg_t armv7m_gdb_dummy_fps_reg =
{
"GDB dummy floating-point status register", armv7m_gdb_dummy_fps_value, 0, 1, 32, NULL, 0, NULL, 0
};
armv7m_core_reg_t armv7m_core_reg_list_arch_info[] =
{
/* CORE_GP are accesible using the core debug registers */
@ -324,15 +331,20 @@ int armv7m_get_gdb_reg_list(target_t *target, reg_t **reg_list[], int *reg_list_
*reg_list_size = 26;
*reg_list = malloc(sizeof(reg_t*) * (*reg_list_size));
/* TODOLATER correct list of registers, names ? */
for (i = 0; i < *reg_list_size; i++)
for (i = 0; i < 16; i++)
{
if (i < ARMV7NUMCOREREGS)
(*reg_list)[i] = &armv7m->process_context->reg_list[i];
else
(*reg_list)[i] = &armv7m_gdb_dummy_fp_reg;
(*reg_list)[i] = &armv7m->process_context->reg_list[i];
}
/* ARMV7M is always in thumb mode, try to make GDB understand this if it does not support this arch */
for (i = 16; i < 24; i++)
{
(*reg_list)[i] = &armv7m_gdb_dummy_fp_reg;
}
(*reg_list)[24] = &armv7m_gdb_dummy_fps_reg;
/* ARMV7M is always in thumb mode, try to make GDB understand this
* if it does not support this arch */
armv7m->process_context->reg_list[15].value[0] |= 1;
(*reg_list)[25] = &armv7m->process_context->reg_list[ARMV7M_xPSR];
return ERROR_OK;