Constify received GDB packet 19/1919/6
authorChristian Eggers <ceggers@gmx.de>
Fri, 14 Feb 2014 20:48:52 +0000 (21:48 +0100)
committerSpencer Oliver <spen@spen-soft.co.uk>
Tue, 4 Mar 2014 20:17:34 +0000 (20:17 +0000)
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>
src/rtos/linux.c
src/rtos/rtos.c
src/rtos/rtos.h
src/server/gdb_server.c
src/target/image.c
src/target/image.h
src/target/smp.c
src/target/smp.h

index b98cf453157a08ff1895b09ce17590b6a0f2aad2..2f5d2fb9259d43aea3f3499ecd2f1fd5c7474c66 100644 (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);
 static void linux_identify_current_threads(struct target *target);
 
                int packet_size);
 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 retval;
        int packet_size)
 {
        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 found = 0;
        int packet_size)
 {
        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)
 {
        int64_t threadid = 0;
        int packet_size)
 {
        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;
        struct linux_os *linux_os = (struct linux_os *)
 {
        int64_t threadid;
        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 *)
                target->rtos->rtos_specific_params;
 {
        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;
 }
 
        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;
        int packet_size)
 {
        int retval = ERROR_OK;
index e9a17ea214750effb4432fa7695cbddf98b6f9b7..1cb6958c0102dbac8ec2e0d61843f857432f8801 100644 (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);
        if (target->rtos == NULL)
 {
        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.
  */
  *
  * 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 = 0;
 {
        int rtos_detected = 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);
 
index f8aa33f10b23152656c0dc955138e6db8ab8e769..a81f67e216bd4d3deacd1f8126cca8c0ce31128c 100644 (file)
@@ -56,7 +56,7 @@ struct rtos {
        threadid_t current_thread;
        struct thread_detail *thread_details;
        int thread_count;
        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;
 };
 
        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);
                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_free_threadlist(struct rtos *rtos);
 int rtos_smp_init(struct target *target);
 /*  function for handling symbol access */
 int rtos_get_gdb_reg_list(struct connection *connection);
 int rtos_update_threads(struct target *target);
 void rtos_free_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 */
 
 #endif /* RTOS_H */
index 0b28287d80a7c8ee22f69a7f18d72ad3e69f0162..d4cc2744c63f48839748a84be6b1b40c45cd1008 100644 (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 gdb_connection *gdb_con = connection->priv;
 {
        struct target *target = get_target_from_connection(connection);
        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 */
 static void gdb_target_to_reg(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");
 {
        if (str_len % 2) {
                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 reg **reg_list;
 {
        struct target *target = get_target_from_connection(connection);
        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);
        int i;
        struct reg **reg_list;
        int reg_list_size;
        int retval;
 {
        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("-");
 
 #ifdef _DEBUG_GDB_IO_
        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);
        char *reg_packet;
 {
        struct target *target = get_target_from_connection(connection);
        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);
        char *separator;
 {
        struct target *target = get_target_from_connection(connection);
        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?????
  */
 static int gdb_read_memory_packet(struct connection *connection,
  * 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;
 {
        struct target *target = get_target_from_connection(connection);
        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);
        char *separator;
 {
        struct target *target = get_target_from_connection(connection);
        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);
        char *separator;
 {
        struct target *target = get_target_from_connection(connection);
        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);
        int current = 0;
 {
        struct target *target = get_target_from_connection(connection);
        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);
        int type;
 {
        struct target *target = get_target_from_connection(connection);
        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;
        char *buf = strdup(_buf);
 {
        int ret = 0;
        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
         * specified are treated as if we provided no memory map(if not we
 {
        /* 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
@@ -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 gdb_connection *gdb_connection = connection->priv;
 {
        struct command_context *cmd_ctx = connection->cmd_ctx;
        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_service *gdb_service = connection->service->priv;
 {
        struct gdb_connection *gdb_connection = connection->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 length;
 
                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;
                }
 
                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;
                }
 
 
                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");
 
                if (*parse != '\0') {
                        LOG_ERROR("incomplete vFlashErase packet received, dropping connection");
@@ -2487,13 +2487,13 @@ static int gdb_v_packet(struct connection *connection,
                int retval;
                unsigned long addr;
                unsigned long length;
                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;
                }
 
                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;
                if (*(parse++) != ':') {
                        LOG_ERROR("incomplete vFlashErase packet received, dropping connection");
                        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 */
                retval = image_add_section(gdb_connection->vflash_image,
 
                /* 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;
 
                if (retval != ERROR_OK)
                        return retval;
 
@@ -2560,7 +2560,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,
  * 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;
 {
        struct target *target = get_target_from_connection(connection);
        char *separator;
@@ -2632,7 +2632,7 @@ static int gdb_input_inner(struct connection *connection)
 
        struct gdb_service *gdb_service = connection->service->priv;
        struct target *target = gdb_service->target;
 
        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;
        int packet_size;
        int retval;
        struct gdb_connection *gdb_con = connection->priv;
@@ -2651,12 +2651,12 @@ static int gdb_input_inner(struct connection *connection)
         */
        do {
                packet_size = GDB_BUFFER_SIZE-1;
         */
        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 */
                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') {
 
                if (LOG_LEVEL_IS(LOG_LVL_DEBUG)) {
                        if (packet[0] == 'X') {
index 8bcba349878f885fd70e0487916a42d32febe25b..07420b1f5adfc34fe471eaaac9f7c158a12ce765 100644 (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;
 
index 9741308ebb543cee92e366e55824f0076664c948..5aeba2f7937c2ddfd70a5f60442c201b72ec6d64 100644 (file)
@@ -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,
 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);
 
 int image_calculate_checksum(uint8_t *buffer, uint32_t nbytes,
                uint32_t *checksum);
index d14ceba962283c2d460db3ccbb84c67c5ef4654e..e688304a0e25ad2591c8f690b347560075dbb44d 100644 (file)
@@ -56,7 +56,7 @@
 
 /* packet j :smp status request */
 int gdb_read_smp_packet(struct connection *connection,
 
 /* 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;
 {
        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,
 
 /* 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;
 {
        struct target *target = get_target_from_connection(connection);
        char *separator;
index fa9fda0cfe9705f0d3d6e925892293df6165df18..69a5cd8557343b472066d550ffa6cf00cd042657 100644 (file)
@@ -21,7 +21,7 @@
 #include "server/server.h"
 
 int gdb_read_smp_packet(struct connection *connection,
 #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,
 int gdb_write_smp_packet(struct connection *connection,
-               char *packet, int packet_size);
+               char const *packet, int packet_size);
 
 

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)