From: ntfreak Date: Sat, 22 Mar 2008 14:19:46 +0000 (+0000) Subject: - gdb server was incorrectly sending null terminator on qXfer:features:read: packet X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=a96f96d1f0827c6b0eb5d67cb9a94a4084e36184;p=fw%2Fopenocd - 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 --- diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c index a81b3345f..b3c6c9f58 100644 --- a/src/server/gdb_server.c +++ b/src/server/gdb_server.c @@ -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; diff --git a/src/target/armv7m.c b/src/target/armv7m.c index e3e9d1ce6..e2134420a 100644 --- a/src/target/armv7m.c +++ b/src/target/armv7m.c @@ -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;