- Fixes '<<' whitespace
[fw/openocd] / src / server / gdb_server.c
index c012738808b14182f35e5a25e39fa04062c62135..ed0a6a4979913c56b9614730a00ff3c24a9b80e4 100644 (file)
@@ -44,7 +44,7 @@ static int gdb_breakpoint_override;
 static enum breakpoint_type gdb_breakpoint_override_type;
 
 extern int gdb_error(connection_t *connection, int retval);
-static unsigned short gdb_port;
+static unsigned short gdb_port = 3333;
 static const char *DIGITS = "0123456789abcdef";
 
 static void gdb_log_callback(void *priv, const char *file, int line,
@@ -133,7 +133,7 @@ int check_pending(connection_t *connection, int timeout_s, int *got_data)
                        return ERROR_OK;
                }
        }
-       *got_data=FD_ISSET(connection->fd, &read_fds)!=0;
+       *got_data=FD_ISSET(connection->fd, &read_fds) != 0;
        return ERROR_OK;
 }
 
@@ -188,7 +188,7 @@ int gdb_get_char(connection_t *connection, int* next_char)
 #ifdef _WIN32
                errno = WSAGetLastError();
 
-               switch(errno)
+               switch (errno)
                {
                        case WSAEWOULDBLOCK:
                                usleep(1000);
@@ -204,7 +204,7 @@ int gdb_get_char(connection_t *connection, int* next_char)
                                exit(-1);
                }
 #else
-               switch(errno)
+               switch (errno)
                {
                        case EAGAIN:
                                usleep(1000);
@@ -313,13 +313,13 @@ int gdb_put_packet_inner(connection_t *connection, char *buffer, int len)
        int gotdata;
        for (;;)
        {
-               if ((retval=check_pending(connection, 0, &gotdata))!=ERROR_OK)
+               if ((retval=check_pending(connection, 0, &gotdata)) != ERROR_OK)
                        return retval;
                if (!gotdata)
                        break;
                if ((retval = gdb_get_char(connection, &reply)) != ERROR_OK)
                        return retval;
-               if( reply == '$' ){
+               if ( reply == '$' ){
                        /* fix a problem with some IAR tools */
                        gdb_putback_char( connection, reply );
                        LOG_DEBUG("Unexpected start of new packet");
@@ -349,7 +349,7 @@ int gdb_put_packet_inner(connection_t *connection, char *buffer, int len)
                        local_buffer[len++] = '#';
                        local_buffer[len++] = DIGITS[(my_checksum >> 4) & 0xf];
                        local_buffer[len++] = DIGITS[my_checksum & 0xf];
-                       if((retval = gdb_write(connection, local_buffer, len)) != ERROR_OK)
+                       if ((retval = gdb_write(connection, local_buffer, len)) != ERROR_OK)
                        {
                                return retval;
                        }
@@ -361,15 +361,15 @@ int gdb_put_packet_inner(connection_t *connection, char *buffer, int len)
                        local_buffer[1] = '#';
                        local_buffer[2] = DIGITS[(my_checksum >> 4) & 0xf];
                        local_buffer[3] = DIGITS[my_checksum & 0xf];
-                       if((retval = gdb_write(connection, local_buffer, 1)) != ERROR_OK)
+                       if ((retval = gdb_write(connection, local_buffer, 1)) != ERROR_OK)
                        {
                                return retval;
                        }
-                       if((retval = gdb_write(connection, buffer, len)) != ERROR_OK)
+                       if ((retval = gdb_write(connection, buffer, len)) != ERROR_OK)
                        {
                                return retval;
                        }
-                       if((retval = gdb_write(connection, local_buffer+1, 3)) != ERROR_OK)
+                       if ((retval = gdb_write(connection, local_buffer+1, 3)) != ERROR_OK)
                        {
                                return retval;
                        }
@@ -402,7 +402,7 @@ int gdb_put_packet_inner(connection_t *connection, char *buffer, int len)
                                log_remove_callback(gdb_log_callback, connection);
                                LOG_WARNING("negative reply, retrying");
                        }
-                       else if( reply == '$' ){
+                       else if ( reply == '$' ){
                                LOG_ERROR("GDB missing ack(1) - assumed good");
                                gdb_putback_char( connection, reply );
                                return ERROR_OK;
@@ -413,7 +413,7 @@ int gdb_put_packet_inner(connection_t *connection, char *buffer, int len)
                                return ERROR_SERVER_REMOTE_CLOSED;
                        }
                }
-               else if( reply == '$' ){
+               else if ( reply == '$' ){
                        LOG_ERROR("GDB missing ack(2) - assumed good");
                        gdb_putback_char( connection, reply );
                        return ERROR_OK;
@@ -600,11 +600,11 @@ int gdb_get_packet_inner(connection_t *connection, char *buffer, int *len)
                 */
                if (gdb_con->noack_mode)
                {
-                       if ((retval=fetch_packet(connection, &checksum_ok, 1, len, buffer))!=ERROR_OK)
+                       if ((retval=fetch_packet(connection, &checksum_ok, 1, len, buffer)) != ERROR_OK)
                                return retval;
                } else
                {
-                       if ((retval=fetch_packet(connection, &checksum_ok, 0, len, buffer))!=ERROR_OK)
+                       if ((retval=fetch_packet(connection, &checksum_ok, 0, len, buffer)) != ERROR_OK)
                                return retval;
                }
 
@@ -720,7 +720,7 @@ int gdb_target_callback_event_handler(struct target_s *target, enum target_event
                        break;
                case TARGET_EVENT_GDB_FLASH_ERASE_START:
                        target_handle_event( target, TARGET_EVENT_OLD_gdb_program_config );
-                       if((retval = jtag_execute_queue()) != ERROR_OK)
+                       if ((retval = jtag_execute_queue()) != ERROR_OK)
                        {
                                return retval;
                        }
@@ -844,7 +844,7 @@ int gdb_connection_closed(connection_t *connection)
        return ERROR_OK;
 }
 
-void gdb_send_error(connection_t *connection, u8 the_error)
+void gdb_send_error(connection_t *connection, uint8_t the_error)
 {
        char err[4];
        snprintf(err, 4, "E%2.2X", the_error );
@@ -885,7 +885,7 @@ void gdb_str_to_target(target_t *target, char *tstr, reg_t *reg)
 {
        int i;
 
-       u8 *buf;
+       uint8_t *buf;
        int buf_len;
        buf = reg->value;
        buf_len = CEIL(reg->size, 8);
@@ -914,7 +914,7 @@ static int hextoint(char c)
 }
 
 /* copy over in register buffer */
-void gdb_target_to_reg(target_t *target, char *tstr, int str_len, u8 *bin)
+void gdb_target_to_reg(target_t *target, char *tstr, int str_len, uint8_t *bin)
 {
        if (str_len % 2)
        {
@@ -923,9 +923,9 @@ void gdb_target_to_reg(target_t *target, char *tstr, int str_len, u8 *bin)
        }
 
        int i;
-       for (i = 0; i < str_len; i+=2)
+       for (i = 0; i < str_len; i += 2)
        {
-               u8 t = hextoint(tstr[i])<<4;
+               uint8_t t = hextoint(tstr[i]) << 4;
                t |= hextoint(tstr[i+1]);
 
                int j = gdb_reg_pos(target, i/2, str_len/2);
@@ -947,7 +947,7 @@ int gdb_get_registers_packet(connection_t *connection, target_t *target, char* p
        LOG_DEBUG("-");
 #endif
 
-       if ((retval = target->type->get_gdb_reg_list(target, &reg_list, &reg_list_size)) != ERROR_OK)
+       if ((retval = target_get_gdb_reg_list(target, &reg_list, &reg_list_size)) != ERROR_OK)
        {
                return gdb_error(connection, retval);
        }
@@ -1005,7 +1005,7 @@ int gdb_set_registers_packet(connection_t *connection, target_t *target, char *p
                return ERROR_SERVER_REMOTE_CLOSED;
        }
 
-       if ((retval = target->type->get_gdb_reg_list(target, &reg_list, &reg_list_size)) != ERROR_OK)
+       if ((retval = target_get_gdb_reg_list(target, &reg_list, &reg_list_size)) != ERROR_OK)
        {
                return gdb_error(connection, retval);
        }
@@ -1013,7 +1013,7 @@ int gdb_set_registers_packet(connection_t *connection, target_t *target, char *p
        packet_p = packet;
        for (i = 0; i < reg_list_size; i++)
        {
-               u8 *bin_buf;
+               uint8_t *bin_buf;
                int chars = (CEIL(reg_list[i]->size, 8) * 2);
 
                if (packet_p + chars > packet + packet_size)
@@ -1057,7 +1057,7 @@ int gdb_get_register_packet(connection_t *connection, target_t *target, char *pa
        LOG_DEBUG("-");
 #endif
 
-       if ((retval = target->type->get_gdb_reg_list(target, &reg_list, &reg_list_size)) != ERROR_OK)
+       if ((retval = target_get_gdb_reg_list(target, &reg_list, &reg_list_size)) != ERROR_OK)
        {
                return gdb_error(connection, retval);
        }
@@ -1083,7 +1083,7 @@ int gdb_get_register_packet(connection_t *connection, target_t *target, char *pa
 int gdb_set_register_packet(connection_t *connection, target_t *target, char *packet, int packet_size)
 {
        char *separator;
-       u8 *bin_buf;
+       uint8_t *bin_buf;
        int reg_num = strtoul(packet + 1, &separator, 16);
        reg_t **reg_list;
        int reg_list_size;
@@ -1092,7 +1092,7 @@ int gdb_set_register_packet(connection_t *connection, target_t *target, char *pa
 
        LOG_DEBUG("-");
 
-       if ((retval = target->type->get_gdb_reg_list(target, &reg_list, &reg_list_size)) != ERROR_OK)
+       if ((retval = target_get_gdb_reg_list(target, &reg_list, &reg_list_size)) != ERROR_OK)
        {
                return gdb_error(connection, retval);
        }
@@ -1163,10 +1163,10 @@ int gdb_error(connection_t *connection, int retval)
 int gdb_read_memory_packet(connection_t *connection, target_t *target, char *packet, int packet_size)
 {
        char *separator;
-       u32 addr = 0;
-       u32 len = 0;
+       uint32_t addr = 0;
+       uint32_t len = 0;
 
-       u8 *buffer;
+       uint8_t *buffer;
        char *hex_buffer;
 
        int retval = ERROR_OK;
@@ -1186,11 +1186,11 @@ int gdb_read_memory_packet(connection_t *connection, target_t *target, char *pac
 
        buffer = malloc(len);
 
-       LOG_DEBUG("addr: 0x%8.8x, len: 0x%8.8x", addr, len);
+       LOG_DEBUG("addr: 0x%8.8" PRIx32 ", len: 0x%8.8" PRIx32 "", addr, len);
 
        retval = target_read_buffer(target, addr, len, buffer);
 
-       if ((retval!=ERROR_OK)&&!gdb_report_data_abort)
+       if ((retval != ERROR_OK)&&!gdb_report_data_abort)
        {
                /* TODO : Here we have to lie and send back all zero's lest stack traces won't work.
                 * At some point this might be fixed in GDB, in which case this code can be removed.
@@ -1212,10 +1212,10 @@ int gdb_read_memory_packet(connection_t *connection, target_t *target, char *pac
        {
                hex_buffer = malloc(len * 2 + 1);
 
-               u32 i;
+               uint32_t i;
                for (i = 0; i < len; i++)
                {
-                       u8 t = buffer[i];
+                       uint8_t t = buffer[i];
                        hex_buffer[2 * i] = DIGITS[(t >> 4) & 0xf];
                        hex_buffer[2 * i + 1] = DIGITS[t & 0xf];
                }
@@ -1237,12 +1237,12 @@ int gdb_read_memory_packet(connection_t *connection, target_t *target, char *pac
 int gdb_write_memory_packet(connection_t *connection, target_t *target, char *packet, int packet_size)
 {
        char *separator;
-       u32 addr = 0;
-       u32 len = 0;
+       uint32_t addr = 0;
+       uint32_t len = 0;
 
-       u8 *buffer;
+       uint8_t *buffer;
 
-       u32 i;
+       uint32_t i;
        int retval;
 
        /* skip command character */
@@ -1266,12 +1266,12 @@ int gdb_write_memory_packet(connection_t *connection, target_t *target, char *pa
 
        buffer = malloc(len);
 
-       LOG_DEBUG("addr: 0x%8.8x, len: 0x%8.8x", addr, len);
+       LOG_DEBUG("addr: 0x%8.8" PRIx32 ", len: 0x%8.8" PRIx32 "", addr, len);
 
        for (i=0; i<len; i++)
        {
-               u32 tmp;
-               sscanf(separator + 2*i, "%2x", &tmp);
+               uint32_t tmp;
+               sscanf(separator + 2*i, "%2" SCNx32 , &tmp);
                buffer[i] = tmp;
        }
 
@@ -1294,8 +1294,8 @@ int gdb_write_memory_packet(connection_t *connection, target_t *target, char *pa
 int gdb_write_memory_binary_packet(connection_t *connection, target_t *target, char *packet, int packet_size)
 {
        char *separator;
-       u32 addr = 0;
-       u32 len = 0;
+       uint32_t addr = 0;
+       uint32_t len = 0;
 
        int retval;
 
@@ -1321,9 +1321,9 @@ int gdb_write_memory_binary_packet(connection_t *connection, target_t *target, c
        retval = ERROR_OK;
        if (len)
        {
-               LOG_DEBUG("addr: 0x%8.8x, len: 0x%8.8x", addr, len);
+               LOG_DEBUG("addr: 0x%8.8" PRIx32 ", len: 0x%8.8" PRIx32 "", addr, len);
 
-               retval = target_write_buffer(target, addr, len, (u8*)separator);
+               retval = target_write_buffer(target, addr, len, (uint8_t*)separator);
        }
 
        if (retval == ERROR_OK)
@@ -1342,7 +1342,7 @@ int gdb_write_memory_binary_packet(connection_t *connection, target_t *target, c
 int gdb_step_continue_packet(connection_t *connection, target_t *target, char *packet, int packet_size)
 {
        int current = 0;
-       u32 address = 0x0;
+       uint32_t address = 0x0;
        int retval=ERROR_OK;
 
        LOG_DEBUG("-");
@@ -1366,7 +1366,8 @@ int gdb_step_continue_packet(connection_t *connection, target_t *target, char *p
        else if (packet[0] == 's')
        {
                LOG_DEBUG("step");
-               retval=target->type->step(target, current, address, 0); /* step at current or address, don't handle breakpoints */
+               /* step at current or address, don't handle breakpoints */
+               retval = target_step(target, current, address, 0);
        }
        return retval;
 }
@@ -1376,8 +1377,8 @@ int gdb_breakpoint_watchpoint_packet(connection_t *connection, target_t *target,
        int type;
        enum breakpoint_type bp_type = BKPT_SOFT /* dummy init to avoid warning */;
        enum watchpoint_rw wp_type;
-       u32 address;
-       u32 size;
+       uint32_t address;
+       uint32_t size;
        char *separator;
        int retval;
 
@@ -1396,7 +1397,7 @@ int gdb_breakpoint_watchpoint_packet(connection_t *connection, target_t *target,
        else if (type == 4) /* access watchpoint */
                wp_type = WPT_ACCESS;
 
-       if (gdb_breakpoint_override&&((bp_type==BKPT_SOFT)||(bp_type==BKPT_HARD)))
+       if (gdb_breakpoint_override && ((bp_type==BKPT_SOFT)||(bp_type==BKPT_HARD)))
        {
                bp_type=gdb_breakpoint_override_type;
        }
@@ -1539,12 +1540,12 @@ static int decode_xfer_read(char *buf, char **annex, int *ofs, unsigned int *len
 
 int gdb_calc_blocksize(flash_bank_t *bank)
 {
-       u32 i;
-       u32 block_size = 0xffffffff;
+       uint32_t i;
+       uint32_t block_size = 0xffffffff;
 
        /* loop through all sectors and return smallest sector size */
 
-       for (i = 0; i < (u32)bank->num_sectors; i++)
+       for (i = 0; i < (uint32_t)bank->num_sectors; i++)
        {
                if (bank->sectors[i].size < block_size)
                        block_size = bank->sectors[i].size;
@@ -1585,8 +1586,8 @@ int gdb_query_packet(connection_t *connection, target_t *target, char *packet, i
                        cmd = malloc((packet_size - 6)/2 + 1);
                        for (i=0; i < (packet_size - 6)/2; i++)
                        {
-                               u32 tmp;
-                               sscanf(packet + 6 + 2*i, "%2x", &tmp);
+                               uint32_t tmp;
+                               sscanf(packet + 6 + 2*i, "%2" SCNx32 , &tmp);
                                cmd[i] = tmp;
                        }
                        cmd[(packet_size - 6)/2] = 0x0;
@@ -1609,9 +1610,9 @@ int gdb_query_packet(connection_t *connection, target_t *target, char *packet, i
                        int retval;
                        char gdb_reply[10];
                        char *separator;
-                       u32 checksum;
-                       u32 addr = 0;
-                       u32 len = 0;
+                       uint32_t checksum;
+                       uint32_t addr = 0;
+                       uint32_t len = 0;
 
                        /* skip command character */
                        packet += 5;
@@ -1630,7 +1631,7 @@ int gdb_query_packet(connection_t *connection, target_t *target, char *packet, i
 
                        if (retval == ERROR_OK)
                        {
-                               snprintf(gdb_reply, 10, "C%8.8x", checksum);
+                               snprintf(gdb_reply, 10, "C%8.8" PRIx32 "", checksum);
                                gdb_put_packet(connection, gdb_reply, 9);
                        }
                        else
@@ -1653,7 +1654,7 @@ int gdb_query_packet(connection_t *connection, target_t *target, char *packet, i
 
                xml_printf(&retval, &buffer, &pos, &size,
                                "PacketSize=%x;qXfer:memory-map:read%c;qXfer:features:read-;QStartNoAckMode+",
-                               (GDB_BUFFER_SIZE - 1), ((gdb_use_memory_map == 1)&&(flash_get_bank_count()>0)) ? '+' : '-');
+                               (GDB_BUFFER_SIZE - 1), ((gdb_use_memory_map == 1) && (flash_get_bank_count()>0)) ? '+' : '-');
 
                if (retval != ERROR_OK)
                {
@@ -1666,7 +1667,7 @@ int gdb_query_packet(connection_t *connection, target_t *target, char *packet, i
 
                return ERROR_OK;
        }
-       else if (strstr(packet, "qXfer:memory-map:read::")&&(flash_get_bank_count()>0))
+       else if (strstr(packet, "qXfer:memory-map:read::") && (flash_get_bank_count()>0))
        {
                /* 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
@@ -1716,7 +1717,7 @@ int gdb_query_packet(connection_t *connection, target_t *target, char *packet, i
 
                qsort(banks, flash_get_bank_count(), sizeof(flash_bank_t *), compare_bank);
 
-               u32 ram_start=0;
+               uint32_t ram_start=0;
                for (i=0; i<flash_get_bank_count(); i++)
                {
                        p = banks[i];
@@ -1737,7 +1738,7 @@ int gdb_query_packet(connection_t *connection, target_t *target, char *packet, i
                                p->base, p->size, blocksize);
                        ram_start=p->base+p->size;
                }
-               if (ram_start!=0)
+               if (ram_start != 0)
                {
                        xml_printf(&retval, &xml, &pos, &size, "<memory type=\"ram\" start=\"0x%x\" length=\"0x%x\"/>\n",
                                ram_start, 0-ram_start);
@@ -1917,7 +1918,7 @@ int gdb_v_packet(connection_t *connection, target_t *target, char *packet, int p
                }
 
                /* create new section with content from packet buffer */
-               if((retval = image_add_section(gdb_connection->vflash_image, addr, length, 0x0, (u8*)parse)) != ERROR_OK)
+               if ((retval = image_add_section(gdb_connection->vflash_image, addr, length, 0x0, (uint8_t*)parse)) != ERROR_OK)
                {
                        return retval;
                }
@@ -1929,7 +1930,7 @@ int gdb_v_packet(connection_t *connection, target_t *target, char *packet, int p
 
        if (!strcmp(packet, "vFlashDone"))
        {
-               u32 written;
+               uint32_t written;
 
                /* process the flashing buffer. No need to erase as GDB
                 * always issues a vFlashErase first. */
@@ -1945,7 +1946,7 @@ int gdb_v_packet(connection_t *connection, target_t *target, char *packet, int p
                        }
                else
                {
-                       LOG_DEBUG("wrote %u bytes from vFlash image to flash", written);
+                       LOG_DEBUG("wrote %u bytes from vFlash image to flash", (unsigned)written);
                        gdb_put_packet(connection, "OK", 2);
                }
 
@@ -1963,7 +1964,7 @@ int gdb_v_packet(connection_t *connection, target_t *target, char *packet, int p
 int gdb_detach(connection_t *connection, target_t *target)
 {
 
-       switch( detach_mode )
+       switch ( detach_mode )
        {
                case GDB_DETACH_RESUME:
                        target_handle_event( target, TARGET_EVENT_OLD_pre_resume );
@@ -2035,12 +2036,12 @@ int gdb_input_inner(connection_t *connection)
                /* terminate with zero */
                packet[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' ){
                                // binary packets spew junk into the debug log stream
                                char buf[ 50 ];
                                int x;
-                               for( x = 0 ; (x < 49) && (packet[x] != ':') ; x++ ){
+                               for ( x = 0 ; (x < 49) && (packet[x] != ':') ; x++ ){
                                        buf[x] = packet[x];
                                }
                                buf[x] = 0;
@@ -2108,7 +2109,7 @@ int gdb_input_inner(connection_t *connection)
                                                        log_add_callback(gdb_log_callback, connection);
                                                        target_call_event_callbacks(target, TARGET_EVENT_GDB_START);
                                                        int retval=gdb_step_continue_packet(connection, target, packet, packet_size);
-                                                       if (retval!=ERROR_OK)
+                                                       if (retval != ERROR_OK)
                                                        {
                                                                /* we'll never receive a halted condition... issue a false one.. */
                                                                gdb_frontend_halted(target, connection);
@@ -2197,8 +2198,8 @@ int gdb_init(void)
 
        if (gdb_port == 0 && server_use_pipes == 0)
        {
-               LOG_DEBUG("no gdb port specified, using default port 3333");
-               gdb_port = 3333;
+               LOG_INFO("gdb port disabled");
+               return ERROR_OK;
        }
 
        if (server_use_pipes)
@@ -2210,7 +2211,8 @@ int gdb_init(void)
 
                add_service("gdb", CONNECTION_PIPE, 0, 1, gdb_new_connection, gdb_input, gdb_connection_closed, gdb_service);
 
-               LOG_DEBUG("gdb service for target %s using pipes", target->type->name);
+               LOG_DEBUG("gdb service for target %s using pipes",
+                               target_get_name(target));
        }
        else
        {
@@ -2221,7 +2223,9 @@ int gdb_init(void)
 
                        add_service("gdb", CONNECTION_TCP, gdb_port + target->target_number, 1, gdb_new_connection, gdb_input, gdb_connection_closed, gdb_service);
 
-                       LOG_DEBUG("gdb service for target %s at port %i", target->type->name, gdb_port + target->target_number);
+                       LOG_DEBUG("gdb service for target %s at port %i",
+                                       target_get_name(target),
+                                       gdb_port + target->target_number);
                        target = target->next;
                }
        }