This is an automated email from Gerrit.

Christian Eggers (cegg...@gmx.de) just uploaded a new patch set to Gerrit, 
which you can find at http://openocd.zylin.com/1919

-- gerrit

commit 8efcfffb6e51d1876ce1c9d9156ad7e7e82b3b0d
Author: Christian Eggers <cegg...@gmx.de>
Date:   Sun Feb 2 21:44:31 2014 +0100

    topic: Constify received GDB packet
    
    With only one exception, the received packet will not be
    altered in any of the processing functions. Some it can
    be made "const".
    
    - rtos/linux.c: mark some functions static
    - gdb_server.c: decode_xfer_read():
      o removed unused parameter "annex"
      o work with copy of input buffer
    
    Change-Id: I7bb410224cf6daa74a6c494624176ccb9ae638ac
    Signed-off-by: Christian Eggers <cegg...@gmx.de>

diff --git a/src/rtos/linux.c b/src/rtos/linux.c
index b98cf45..4276cbc 100644
--- a/src/rtos/linux.c
+++ b/src/rtos/linux.c
@@ -351,7 +351,7 @@ const struct rtos_type Linux_os = {
        .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);
 static void linux_identify_current_threads(struct target *target);
 
@@ -1116,8 +1116,8 @@ static int linux_task_update(struct target *target, int 
context)
        return ERROR_OK;
 }
 
-int linux_gdb_thread_packet(struct target *target,
-       struct connection *connection, char *packet,
+static int linux_gdb_thread_packet(struct target *target,
+       struct connection *connection, char const *packet,
        int packet_size)
 {
        int retval;
@@ -1152,8 +1152,8 @@ int linux_gdb_thread_packet(struct target *target,
        return ERROR_OK;
 }
 
-int linux_gdb_thread_update(struct target *target,
-       struct connection *connection, char *packet,
+static int linux_gdb_thread_update(struct target *target,
+       struct connection *connection, char const *packet,
        int packet_size)
 {
        int found = 0;
@@ -1199,8 +1199,8 @@ int linux_gdb_thread_update(struct target *target,
        return ERROR_OK;
 }
 
-int linux_thread_extra_info(struct target *target,
-       struct connection *connection, char *packet,
+static int linux_thread_extra_info(struct target *target,
+       struct connection *connection, char const *packet,
        int packet_size)
 {
        int64_t threadid = 0;
@@ -1246,8 +1246,8 @@ int linux_thread_extra_info(struct target *target,
        return ERROR_OK;
 }
 
-int linux_gdb_T_packet(struct connection *connection,
-       struct target *target, char *packet, int packet_size)
+static int linux_gdb_T_packet(struct connection *connection,
+       struct target *target, char const *packet, int packet_size)
 {
        int64_t threadid;
        struct linux_os *linux_os = (struct linux_os *)
@@ -1307,8 +1307,8 @@ int linux_gdb_T_packet(struct connection *connection,
        return retval;
 }
 
-int linux_gdb_h_packet(struct connection *connection,
-       struct target *target, char *packet, int packet_size)
+static int linux_gdb_h_packet(struct connection *connection,
+       struct target *target, char const *packet, int packet_size)
 {
        struct linux_os *linux_os = (struct linux_os *)
                target->rtos->rtos_specific_params;
@@ -1376,7 +1376,7 @@ int linux_gdb_h_packet(struct connection *connection,
        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 retval = ERROR_OK;
diff --git a/src/rtos/rtos.c b/src/rtos/rtos.c
index aadc467..62740ce 100644
--- a/src/rtos/rtos.c
+++ b/src/rtos/rtos.c
@@ -46,7 +46,7 @@ static struct rtos_type *rtos_types[] = {
        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)
 {
@@ -138,7 +138,7 @@ int rtos_create(Jim_GetOptInfo *goi, struct target *target)
        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);
        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.
  */
-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;
        uint64_t addr;
@@ -254,7 +254,7 @@ done:
        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);
 
diff --git a/src/rtos/rtos.h b/src/rtos/rtos.h
index 1ff4f11..ab3fa16 100644
--- a/src/rtos/rtos.h
+++ b/src/rtos/rtos.h
@@ -56,7 +56,7 @@ struct rtos {
        threadid_t current_thread;
        struct thread_detail *thread_details;
        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;
 };
 
@@ -95,12 +95,12 @@ int rtos_generic_stack_read(struct target *target,
                int64_t stack_ptr,
                char **hex_reg_list);
 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_update_threads(struct target *target);
 void rtos_whipe_threadlist(struct rtos *rtos);
 int rtos_smp_init(struct target *target);
 /*  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 */
diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c
index 149af77..bf3be4c 100644
--- a/src/server/gdb_server.c
+++ b/src/server/gdb_server.c
@@ -1034,7 +1034,7 @@ static void gdb_send_error(struct connection *connection, 
uint8_t the_error)
 }
 
 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 gdb_connection *gdb_con = connection->priv;
@@ -1091,7 +1091,7 @@ static void gdb_str_to_target(struct target *target,
 
 /* copy over in register buffer */
 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) {
                LOG_ERROR("BUG: gdb value with uneven number of characters 
encountered");
@@ -1112,7 +1112,7 @@ static void gdb_target_to_reg(struct target *target,
 }
 
 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 reg **reg_list;
@@ -1168,14 +1168,14 @@ static int gdb_get_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);
        int i;
        struct reg **reg_list;
        int reg_list_size;
        int retval;
-       char *packet_p;
+       char const *packet_p;
 
 #ifdef _DEBUG_GDB_IO_
        LOG_DEBUG("-");
@@ -1223,7 +1223,7 @@ static int gdb_set_registers_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);
        char *reg_packet;
@@ -1262,7 +1262,7 @@ static int gdb_get_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);
        char *separator;
@@ -1328,7 +1328,7 @@ static int gdb_error(struct connection *connection, int 
retval)
  * 8191 bytes by the looks of it. Why 8191 bytes instead of 8192?????
  */
 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);
        char *separator;
@@ -1399,7 +1399,7 @@ static int gdb_read_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);
        char *separator;
@@ -1446,7 +1446,7 @@ static int gdb_write_memory_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);
        char *separator;
@@ -1503,7 +1503,7 @@ static int gdb_write_memory_binary_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);
        int current = 0;
@@ -1513,7 +1513,6 @@ static int gdb_step_continue_packet(struct connection 
*connection,
        LOG_DEBUG("-");
 
        if (packet_size > 1) {
-               packet[packet_size] = 0;
                address = strtoul(packet + 1, NULL, 16);
        } else
                current = 1;
@@ -1532,7 +1531,7 @@ static int gdb_step_continue_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);
        int type;
@@ -1660,16 +1659,19 @@ 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, int *ofs, unsigned int *len)
 {
+       int ret = 0;
+       char *buf = strdup(_buf);
        char *separator;
 
        /* Extract and NUL-terminate the annex. */
-       *annex = buf;
        while (*buf && *buf != ':')
                buf++;
-       if (*buf == '\0')
-               return -1;
+       if (*buf == '\0') {
+               ret = -1;
+               goto out;
+       }
        *buf++ = 0;
 
        /* After the read marker and annex, qXfer looks like a
@@ -1677,12 +1679,16 @@ static int decode_xfer_read(char *buf, char **annex, 
int *ofs, unsigned int *len
 
        *ofs = strtoul(buf, &separator, 16);
 
-       if (*separator != ',')
-               return -1;
+       if (*separator != ',') {
+               ret = -1;
+               goto out;
+       }
 
        *len = strtoul(separator + 1, NULL, 16);
 
-       return 0;
+out:
+       free(buf);
+       return ret;
 }
 
 static int compare_bank(const void *a, const void *b)
@@ -1700,7 +1706,7 @@ static int compare_bank(const void *a, const void *b)
 }
 
 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
         * specified are treated as if we provided no memory map(if not we
@@ -2250,7 +2256,7 @@ error:
 }
 
 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 gdb_connection *gdb_connection = connection->priv;
@@ -2361,12 +2367,11 @@ static int gdb_query_packet(struct connection 
*connection,
 
                int offset;
                unsigned int length;
-               char *annex;
 
                /* skip command character */
                packet += 20;
 
-               if (decode_xfer_read(packet, &annex, &offset, &length) < 0) {
+               if (decode_xfer_read(packet, &offset, &length) < 0) {
                        gdb_send_error(connection, 01);
                        return ERROR_OK;
                }
@@ -2398,7 +2403,7 @@ static int gdb_query_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_service *gdb_service = connection->service->priv;
@@ -2415,20 +2420,20 @@ static int gdb_v_packet(struct connection *connection,
                unsigned long addr;
                unsigned long length;
 
-               char *parse = packet + 12;
+               char const *parse = packet + 12;
                if (*parse == '\0') {
                        LOG_ERROR("incomplete vFlashErase packet received, 
dropping connection");
                        return ERROR_SERVER_REMOTE_CLOSED;
                }
 
-               addr = strtoul(parse, &parse, 16);
+               addr = strtoul(parse, (char **)&parse, 16);
 
                if (*(parse++) != ',' || *parse == '\0') {
                        LOG_ERROR("incomplete vFlashErase packet received, 
dropping connection");
                        return ERROR_SERVER_REMOTE_CLOSED;
                }
 
-               length = strtoul(parse, &parse, 16);
+               length = strtoul(parse, (char **)&parse, 16);
 
                if (*parse != '\0') {
                        LOG_ERROR("incomplete vFlashErase packet received, 
dropping connection");
@@ -2471,13 +2476,13 @@ static int gdb_v_packet(struct connection *connection,
                int retval;
                unsigned long addr;
                unsigned long length;
-               char *parse = packet + 12;
+               char const *parse = packet + 12;
 
                if (*parse == '\0') {
                        LOG_ERROR("incomplete vFlashErase packet received, 
dropping connection");
                        return ERROR_SERVER_REMOTE_CLOSED;
                }
-               addr = strtoul(parse, &parse, 16);
+               addr = strtoul(parse, (char **)&parse, 16);
                if (*(parse++) != ':') {
                        LOG_ERROR("incomplete vFlashErase packet received, 
dropping connection");
                        return ERROR_SERVER_REMOTE_CLOSED;
@@ -2492,7 +2497,7 @@ static int gdb_v_packet(struct connection *connection,
 
                /* create new section with content from packet buffer */
                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)
                        return retval;
 
@@ -2544,7 +2549,7 @@ static int gdb_detach(struct connection *connection)
  * Fretcode,errno,Ctrl-C flag;call-specific attachment
  */
 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);
        char *separator;
@@ -2616,7 +2621,7 @@ static int gdb_input_inner(struct connection *connection)
 
        struct gdb_service *gdb_service = connection->service->priv;
        struct target *target = gdb_service->target;
-       char *packet = gdb_packet_buffer;
+       char const *packet = gdb_packet_buffer;
        int packet_size;
        int retval;
        struct gdb_connection *gdb_con = connection->priv;
@@ -2635,12 +2640,12 @@ static int gdb_input_inner(struct connection 
*connection)
         */
        do {
                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)
                        return retval;
 
                /* terminate with zero */
-               packet[packet_size] = 0;
+               gdb_packet_buffer[packet_size] = '\0';
 
                if (LOG_LEVEL_IS(LOG_LVL_DEBUG)) {
                        if (packet[0] == 'X') {
diff --git a/src/target/image.c b/src/target/image.c
index 8bcba34..07420b1 100644
--- a/src/target/image.c
+++ b/src/target/image.c
@@ -902,7 +902,7 @@ int image_read_section(struct image *image,
        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;
 
diff --git a/src/target/image.h b/src/target/image.h
index 9741308..5aeba2f 100644
--- a/src/target/image.h
+++ b/src/target/image.h
@@ -99,7 +99,7 @@ int image_read_section(struct image *image, int section, 
uint32_t offset,
 void image_close(struct image *image);
 
 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,
                uint32_t *checksum);
diff --git a/src/target/smp.c b/src/target/smp.c
index d14ceba..e688304 100644
--- a/src/target/smp.c
+++ b/src/target/smp.c
@@ -56,7 +56,7 @@
 
 /* packet j :smp status request */
 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);
        int retval = ERROR_OK;
@@ -77,7 +77,7 @@ int gdb_read_smp_packet(struct connection *connection,
 
 /* J :  smp set request */
 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);
        char *separator;
diff --git a/src/target/smp.h b/src/target/smp.h
index fa9fda0..69a5cd8 100644
--- a/src/target/smp.h
+++ b/src/target/smp.h
@@ -21,7 +21,7 @@
 #include "server/server.h"
 
 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,
-               char *packet, int packet_size);
+               char const *packet, int packet_size);
 

-- 

------------------------------------------------------------------------------
WatchGuard Dimension instantly turns raw network data into actionable 
security intelligence. It gives you real-time visual feedback on key
security issues and trends.  Skip the complicated setup - simply import
a virtual appliance and go from zero to informed in seconds.
http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk
_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to