Constify received GDB packet

v2:
- Split work into separate patches

The received packet will not be altered in any of the processing functions.
Some it can be made "const".

Change-Id: I7bb410224cf6daa74a6c494624176ccb9ae638ac
Signed-off-by: Christian Eggers <ceggers@gmx.de>
Reviewed-on: http://openocd.zylin.com/1919
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
This commit is contained in:
Christian Eggers 2014-02-14 21:48:52 +01:00 committed by Spencer Oliver
parent 537b06a810
commit 9b2577742c
8 changed files with 46 additions and 46 deletions

View File

@ -351,7 +351,7 @@ const struct rtos_type Linux_os = {
.ps_command = linux_ps_command, .ps_command = linux_ps_command,
}; };
static int linux_thread_packet(struct connection *connection, char *packet, static int linux_thread_packet(struct connection *connection, char const *packet,
int packet_size); int packet_size);
static void linux_identify_current_threads(struct target *target); static void linux_identify_current_threads(struct target *target);
@ -1117,7 +1117,7 @@ static int linux_task_update(struct target *target, int context)
} }
int linux_gdb_thread_packet(struct target *target, int linux_gdb_thread_packet(struct target *target,
struct connection *connection, char *packet, struct connection *connection, char const *packet,
int packet_size) int packet_size)
{ {
int retval; int retval;
@ -1153,7 +1153,7 @@ int linux_gdb_thread_packet(struct target *target,
} }
int linux_gdb_thread_update(struct target *target, int linux_gdb_thread_update(struct target *target,
struct connection *connection, char *packet, struct connection *connection, char const *packet,
int packet_size) int packet_size)
{ {
int found = 0; int found = 0;
@ -1200,7 +1200,7 @@ int linux_gdb_thread_update(struct target *target,
} }
int linux_thread_extra_info(struct target *target, int linux_thread_extra_info(struct target *target,
struct connection *connection, char *packet, struct connection *connection, char const *packet,
int packet_size) int packet_size)
{ {
int64_t threadid = 0; int64_t threadid = 0;
@ -1247,7 +1247,7 @@ int linux_thread_extra_info(struct target *target,
} }
int linux_gdb_T_packet(struct connection *connection, int linux_gdb_T_packet(struct connection *connection,
struct target *target, char *packet, int packet_size) struct target *target, char const *packet, int packet_size)
{ {
int64_t threadid; int64_t threadid;
struct linux_os *linux_os = (struct linux_os *) struct linux_os *linux_os = (struct linux_os *)
@ -1308,7 +1308,7 @@ int linux_gdb_T_packet(struct connection *connection,
} }
int linux_gdb_h_packet(struct connection *connection, int linux_gdb_h_packet(struct connection *connection,
struct target *target, char *packet, int packet_size) struct target *target, char const *packet, int packet_size)
{ {
struct linux_os *linux_os = (struct linux_os *) struct linux_os *linux_os = (struct linux_os *)
target->rtos->rtos_specific_params; target->rtos->rtos_specific_params;
@ -1376,7 +1376,7 @@ int linux_gdb_h_packet(struct connection *connection,
return ERROR_OK; return ERROR_OK;
} }
static int linux_thread_packet(struct connection *connection, char *packet, static int linux_thread_packet(struct connection *connection, char const *packet,
int packet_size) int packet_size)
{ {
int retval = ERROR_OK; int retval = ERROR_OK;

View File

@ -46,7 +46,7 @@ static struct rtos_type *rtos_types[] = {
NULL NULL
}; };
int rtos_thread_packet(struct connection *connection, char *packet, int packet_size); int rtos_thread_packet(struct connection *connection, const char *packet, int packet_size);
int rtos_smp_init(struct target *target) int rtos_smp_init(struct target *target)
{ {
@ -138,7 +138,7 @@ int rtos_create(Jim_GetOptInfo *goi, struct target *target)
return JIM_ERR; return JIM_ERR;
} }
int gdb_thread_packet(struct connection *connection, char *packet, int packet_size) int gdb_thread_packet(struct connection *connection, char const *packet, int packet_size)
{ {
struct target *target = get_target_from_connection(connection); struct target *target = get_target_from_connection(connection);
if (target->rtos == NULL) if (target->rtos == NULL)
@ -186,7 +186,7 @@ static char *next_symbol(struct rtos *os, char *cur_symbol, uint64_t cur_addr)
* *
* rtos_qsymbol() returns 1 if an RTOS has been detected, or 0 otherwise. * rtos_qsymbol() returns 1 if an RTOS has been detected, or 0 otherwise.
*/ */
int rtos_qsymbol(struct connection *connection, char *packet, int packet_size) int rtos_qsymbol(struct connection *connection, char const *packet, int packet_size)
{ {
int rtos_detected = 0; int rtos_detected = 0;
uint64_t addr = 0; uint64_t addr = 0;
@ -254,7 +254,7 @@ done:
return rtos_detected; return rtos_detected;
} }
int rtos_thread_packet(struct connection *connection, char *packet, int packet_size) int rtos_thread_packet(struct connection *connection, char const *packet, int packet_size)
{ {
struct target *target = get_target_from_connection(connection); struct target *target = get_target_from_connection(connection);

View File

@ -56,7 +56,7 @@ struct rtos {
threadid_t current_thread; threadid_t current_thread;
struct thread_detail *thread_details; struct thread_detail *thread_details;
int thread_count; int thread_count;
int (*gdb_thread_packet)(struct connection *connection, char *packet, int packet_size); int (*gdb_thread_packet)(struct connection *connection, char const *packet, int packet_size);
void *rtos_specific_params; void *rtos_specific_params;
}; };
@ -95,12 +95,12 @@ int rtos_generic_stack_read(struct target *target,
int64_t stack_ptr, int64_t stack_ptr,
char **hex_reg_list); char **hex_reg_list);
int rtos_try_next(struct target *target); int rtos_try_next(struct target *target);
int gdb_thread_packet(struct connection *connection, char *packet, int packet_size); int gdb_thread_packet(struct connection *connection, char const *packet, int packet_size);
int rtos_get_gdb_reg_list(struct connection *connection); int rtos_get_gdb_reg_list(struct connection *connection);
int rtos_update_threads(struct target *target); int rtos_update_threads(struct target *target);
void rtos_free_threadlist(struct rtos *rtos); void rtos_free_threadlist(struct rtos *rtos);
int rtos_smp_init(struct target *target); int rtos_smp_init(struct target *target);
/* function for handling symbol access */ /* function for handling symbol access */
int rtos_qsymbol(struct connection *connection, char *packet, int packet_size); int rtos_qsymbol(struct connection *connection, char const *packet, int packet_size);
#endif /* RTOS_H */ #endif /* RTOS_H */

View File

@ -1044,7 +1044,7 @@ static void gdb_send_error(struct connection *connection, uint8_t the_error)
} }
static int gdb_last_signal_packet(struct connection *connection, static int gdb_last_signal_packet(struct connection *connection,
char *packet, int packet_size) char const *packet, int packet_size)
{ {
struct target *target = get_target_from_connection(connection); struct target *target = get_target_from_connection(connection);
struct gdb_connection *gdb_con = connection->priv; struct gdb_connection *gdb_con = connection->priv;
@ -1101,7 +1101,7 @@ static void gdb_str_to_target(struct target *target,
/* copy over in register buffer */ /* copy over in register buffer */
static void gdb_target_to_reg(struct target *target, static void gdb_target_to_reg(struct target *target,
char *tstr, int str_len, uint8_t *bin) char const *tstr, int str_len, uint8_t *bin)
{ {
if (str_len % 2) { if (str_len % 2) {
LOG_ERROR("BUG: gdb value with uneven number of characters encountered"); LOG_ERROR("BUG: gdb value with uneven number of characters encountered");
@ -1122,7 +1122,7 @@ static void gdb_target_to_reg(struct target *target,
} }
static int gdb_get_registers_packet(struct connection *connection, static int gdb_get_registers_packet(struct connection *connection,
char *packet, int packet_size) char const *packet, int packet_size)
{ {
struct target *target = get_target_from_connection(connection); struct target *target = get_target_from_connection(connection);
struct reg **reg_list; struct reg **reg_list;
@ -1178,14 +1178,14 @@ static int gdb_get_registers_packet(struct connection *connection,
} }
static int gdb_set_registers_packet(struct connection *connection, static int gdb_set_registers_packet(struct connection *connection,
char *packet, int packet_size) char const *packet, int packet_size)
{ {
struct target *target = get_target_from_connection(connection); struct target *target = get_target_from_connection(connection);
int i; int i;
struct reg **reg_list; struct reg **reg_list;
int reg_list_size; int reg_list_size;
int retval; int retval;
char *packet_p; char const *packet_p;
#ifdef _DEBUG_GDB_IO_ #ifdef _DEBUG_GDB_IO_
LOG_DEBUG("-"); LOG_DEBUG("-");
@ -1233,7 +1233,7 @@ static int gdb_set_registers_packet(struct connection *connection,
} }
static int gdb_get_register_packet(struct connection *connection, static int gdb_get_register_packet(struct connection *connection,
char *packet, int packet_size) char const *packet, int packet_size)
{ {
struct target *target = get_target_from_connection(connection); struct target *target = get_target_from_connection(connection);
char *reg_packet; char *reg_packet;
@ -1272,7 +1272,7 @@ static int gdb_get_register_packet(struct connection *connection,
} }
static int gdb_set_register_packet(struct connection *connection, static int gdb_set_register_packet(struct connection *connection,
char *packet, int packet_size) char const *packet, int packet_size)
{ {
struct target *target = get_target_from_connection(connection); struct target *target = get_target_from_connection(connection);
char *separator; char *separator;
@ -1338,7 +1338,7 @@ static int gdb_error(struct connection *connection, int retval)
* 8191 bytes by the looks of it. Why 8191 bytes instead of 8192????? * 8191 bytes by the looks of it. Why 8191 bytes instead of 8192?????
*/ */
static int gdb_read_memory_packet(struct connection *connection, static int gdb_read_memory_packet(struct connection *connection,
char *packet, int packet_size) char const *packet, int packet_size)
{ {
struct target *target = get_target_from_connection(connection); struct target *target = get_target_from_connection(connection);
char *separator; char *separator;
@ -1409,7 +1409,7 @@ static int gdb_read_memory_packet(struct connection *connection,
} }
static int gdb_write_memory_packet(struct connection *connection, static int gdb_write_memory_packet(struct connection *connection,
char *packet, int packet_size) char const *packet, int packet_size)
{ {
struct target *target = get_target_from_connection(connection); struct target *target = get_target_from_connection(connection);
char *separator; char *separator;
@ -1456,7 +1456,7 @@ static int gdb_write_memory_packet(struct connection *connection,
} }
static int gdb_write_memory_binary_packet(struct connection *connection, static int gdb_write_memory_binary_packet(struct connection *connection,
char *packet, int packet_size) char const *packet, int packet_size)
{ {
struct target *target = get_target_from_connection(connection); struct target *target = get_target_from_connection(connection);
char *separator; char *separator;
@ -1513,7 +1513,7 @@ static int gdb_write_memory_binary_packet(struct connection *connection,
} }
static int gdb_step_continue_packet(struct connection *connection, static int gdb_step_continue_packet(struct connection *connection,
char *packet, int packet_size) char const *packet, int packet_size)
{ {
struct target *target = get_target_from_connection(connection); struct target *target = get_target_from_connection(connection);
int current = 0; int current = 0;
@ -1541,7 +1541,7 @@ static int gdb_step_continue_packet(struct connection *connection,
} }
static int gdb_breakpoint_watchpoint_packet(struct connection *connection, static int gdb_breakpoint_watchpoint_packet(struct connection *connection,
char *packet, int packet_size) char const *packet, int packet_size)
{ {
struct target *target = get_target_from_connection(connection); struct target *target = get_target_from_connection(connection);
int type; int type;
@ -1669,7 +1669,7 @@ static void xml_printf(int *retval, char **xml, int *pos, int *size,
} }
} }
static int decode_xfer_read(char *_buf, char **annex, int *ofs, unsigned int *len) static int decode_xfer_read(char const *_buf, char **annex, int *ofs, unsigned int *len)
{ {
int ret = 0; int ret = 0;
char *buf = strdup(_buf); char *buf = strdup(_buf);
@ -1721,7 +1721,7 @@ static int compare_bank(const void *a, const void *b)
} }
static int gdb_memory_map(struct connection *connection, static int gdb_memory_map(struct connection *connection,
char *packet, int packet_size) char const *packet, int packet_size)
{ {
/* We get away with only specifying flash here. Regions that are not /* We get away with only specifying flash here. Regions that are not
* specified are treated as if we provided no memory map(if not we * specified are treated as if we provided no memory map(if not we
@ -2265,7 +2265,7 @@ error:
} }
static int gdb_query_packet(struct connection *connection, static int gdb_query_packet(struct connection *connection,
char *packet, int packet_size) char const *packet, int packet_size)
{ {
struct command_context *cmd_ctx = connection->cmd_ctx; struct command_context *cmd_ctx = connection->cmd_ctx;
struct gdb_connection *gdb_connection = connection->priv; struct gdb_connection *gdb_connection = connection->priv;
@ -2414,7 +2414,7 @@ static int gdb_query_packet(struct connection *connection,
} }
static int gdb_v_packet(struct connection *connection, static int gdb_v_packet(struct connection *connection,
char *packet, int packet_size) char const *packet, int packet_size)
{ {
struct gdb_connection *gdb_connection = connection->priv; struct gdb_connection *gdb_connection = connection->priv;
struct gdb_service *gdb_service = connection->service->priv; struct gdb_service *gdb_service = connection->service->priv;
@ -2431,20 +2431,20 @@ static int gdb_v_packet(struct connection *connection,
unsigned long addr; unsigned long addr;
unsigned long length; unsigned long length;
char *parse = packet + 12; char const *parse = packet + 12;
if (*parse == '\0') { if (*parse == '\0') {
LOG_ERROR("incomplete vFlashErase packet received, dropping connection"); LOG_ERROR("incomplete vFlashErase packet received, dropping connection");
return ERROR_SERVER_REMOTE_CLOSED; return ERROR_SERVER_REMOTE_CLOSED;
} }
addr = strtoul(parse, &parse, 16); addr = strtoul(parse, (char **)&parse, 16);
if (*(parse++) != ',' || *parse == '\0') { if (*(parse++) != ',' || *parse == '\0') {
LOG_ERROR("incomplete vFlashErase packet received, dropping connection"); LOG_ERROR("incomplete vFlashErase packet received, dropping connection");
return ERROR_SERVER_REMOTE_CLOSED; return ERROR_SERVER_REMOTE_CLOSED;
} }
length = strtoul(parse, &parse, 16); length = strtoul(parse, (char **)&parse, 16);
if (*parse != '\0') { if (*parse != '\0') {
LOG_ERROR("incomplete vFlashErase packet received, dropping connection"); LOG_ERROR("incomplete vFlashErase packet received, dropping connection");
@ -2487,13 +2487,13 @@ static int gdb_v_packet(struct connection *connection,
int retval; int retval;
unsigned long addr; unsigned long addr;
unsigned long length; unsigned long length;
char *parse = packet + 12; char const *parse = packet + 12;
if (*parse == '\0') { if (*parse == '\0') {
LOG_ERROR("incomplete vFlashErase packet received, dropping connection"); LOG_ERROR("incomplete vFlashErase packet received, dropping connection");
return ERROR_SERVER_REMOTE_CLOSED; return ERROR_SERVER_REMOTE_CLOSED;
} }
addr = strtoul(parse, &parse, 16); addr = strtoul(parse, (char **)&parse, 16);
if (*(parse++) != ':') { if (*(parse++) != ':') {
LOG_ERROR("incomplete vFlashErase packet received, dropping connection"); LOG_ERROR("incomplete vFlashErase packet received, dropping connection");
return ERROR_SERVER_REMOTE_CLOSED; return ERROR_SERVER_REMOTE_CLOSED;
@ -2508,7 +2508,7 @@ static int gdb_v_packet(struct connection *connection,
/* create new section with content from packet buffer */ /* create new section with content from packet buffer */
retval = image_add_section(gdb_connection->vflash_image, retval = image_add_section(gdb_connection->vflash_image,
addr, length, 0x0, (uint8_t *)parse); addr, length, 0x0, (uint8_t const *)parse);
if (retval != ERROR_OK) if (retval != ERROR_OK)
return retval; return retval;
@ -2560,7 +2560,7 @@ static int gdb_detach(struct connection *connection)
* Fretcode,errno,Ctrl-C flag;call-specific attachment * Fretcode,errno,Ctrl-C flag;call-specific attachment
*/ */
static int gdb_fileio_response_packet(struct connection *connection, static int gdb_fileio_response_packet(struct connection *connection,
char *packet, int packet_size) char const *packet, int packet_size)
{ {
struct target *target = get_target_from_connection(connection); struct target *target = get_target_from_connection(connection);
char *separator; char *separator;
@ -2632,7 +2632,7 @@ static int gdb_input_inner(struct connection *connection)
struct gdb_service *gdb_service = connection->service->priv; struct gdb_service *gdb_service = connection->service->priv;
struct target *target = gdb_service->target; struct target *target = gdb_service->target;
char *packet = gdb_packet_buffer; char const *packet = gdb_packet_buffer;
int packet_size; int packet_size;
int retval; int retval;
struct gdb_connection *gdb_con = connection->priv; struct gdb_connection *gdb_con = connection->priv;
@ -2651,12 +2651,12 @@ static int gdb_input_inner(struct connection *connection)
*/ */
do { do {
packet_size = GDB_BUFFER_SIZE-1; packet_size = GDB_BUFFER_SIZE-1;
retval = gdb_get_packet(connection, packet, &packet_size); retval = gdb_get_packet(connection, gdb_packet_buffer, &packet_size);
if (retval != ERROR_OK) if (retval != ERROR_OK)
return retval; return retval;
/* terminate with zero */ /* terminate with zero */
packet[packet_size] = 0; gdb_packet_buffer[packet_size] = '\0';
if (LOG_LEVEL_IS(LOG_LVL_DEBUG)) { if (LOG_LEVEL_IS(LOG_LVL_DEBUG)) {
if (packet[0] == 'X') { if (packet[0] == 'X') {

View File

@ -902,7 +902,7 @@ int image_read_section(struct image *image,
return ERROR_OK; return ERROR_OK;
} }
int image_add_section(struct image *image, uint32_t base, uint32_t size, int flags, uint8_t *data) int image_add_section(struct image *image, uint32_t base, uint32_t size, int flags, uint8_t const *data)
{ {
struct imagesection *section; struct imagesection *section;

View File

@ -99,7 +99,7 @@ int image_read_section(struct image *image, int section, uint32_t offset,
void image_close(struct image *image); void image_close(struct image *image);
int image_add_section(struct image *image, uint32_t base, uint32_t size, int image_add_section(struct image *image, uint32_t base, uint32_t size,
int flags, uint8_t *data); int flags, uint8_t const *data);
int image_calculate_checksum(uint8_t *buffer, uint32_t nbytes, int image_calculate_checksum(uint8_t *buffer, uint32_t nbytes,
uint32_t *checksum); uint32_t *checksum);

View File

@ -56,7 +56,7 @@
/* packet j :smp status request */ /* packet j :smp status request */
int gdb_read_smp_packet(struct connection *connection, int gdb_read_smp_packet(struct connection *connection,
char *packet, int packet_size) char const *packet, int packet_size)
{ {
struct target *target = get_target_from_connection(connection); struct target *target = get_target_from_connection(connection);
int retval = ERROR_OK; int retval = ERROR_OK;
@ -77,7 +77,7 @@ int gdb_read_smp_packet(struct connection *connection,
/* J : smp set request */ /* J : smp set request */
int gdb_write_smp_packet(struct connection *connection, int gdb_write_smp_packet(struct connection *connection,
char *packet, int packet_size) char const *packet, int packet_size)
{ {
struct target *target = get_target_from_connection(connection); struct target *target = get_target_from_connection(connection);
char *separator; char *separator;

View File

@ -21,7 +21,7 @@
#include "server/server.h" #include "server/server.h"
int gdb_read_smp_packet(struct connection *connection, int gdb_read_smp_packet(struct connection *connection,
char *packet, int packet_size); char const *packet, int packet_size);
int gdb_write_smp_packet(struct connection *connection, int gdb_write_smp_packet(struct connection *connection,
char *packet, int packet_size); char const *packet, int packet_size);