Browse Source

- 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
tags/v0.1.0
ntfreak 16 years ago
parent
commit
a96f96d1f0
2 changed files with 20 additions and 8 deletions
  1. +1
    -1
      src/server/gdb_server.c
  2. +19
    -7
      src/target/armv7m.c

+ 1
- 1
src/server/gdb_server.c 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;


+ 19
- 7
src/target/armv7m.c 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;


Loading…
Cancel
Save