#include "rtos/rtos.h"
#include "target/smp.h"
-
/**
* @file
* GDB server implementation.
bool mem_write_error;
};
-
#if 0
#define _DEBUG_GDB_IO_
#endif
}
#ifdef _DEBUG_GDB_IO_
- debug_buffer = malloc(gdb_con->buf_cnt + 1);
- memcpy(debug_buffer, gdb_con->buffer, gdb_con->buf_cnt);
- debug_buffer[gdb_con->buf_cnt] = 0;
+ debug_buffer = strndup(gdb_con->buffer, gdb_con->buf_cnt);
LOG_DEBUG("received '%s'", debug_buffer);
free(debug_buffer);
#endif
while (1)
{
#ifdef _DEBUG_GDB_IO_
- debug_buffer = malloc(len + 1);
- memcpy(debug_buffer, buffer, len);
- debug_buffer[len] = 0;
+ debug_buffer = strndup(buffer, len);
LOG_DEBUG("sending packet '$%s#%2.2x'", debug_buffer, my_checksum);
free(debug_buffer);
#endif
for (i = 0; i < reg_list_size; i++)
{
- reg_packet_size += reg_list[i]->size;
+ reg_packet_size += DIV_ROUND_UP(reg_list[i]->size, 8) * 2;
}
assert(reg_packet_size > 0);
- reg_packet = malloc(DIV_ROUND_UP(reg_packet_size, 8) * 2);
+ reg_packet = malloc(reg_packet_size);
reg_packet_p = reg_packet;
for (i = 0; i < reg_list_size; i++)
#ifdef _DEBUG_GDB_IO_
{
- char *reg_packet_p;
- reg_packet_p = strndup(reg_packet, DIV_ROUND_UP(reg_packet_size, 8) * 2);
- LOG_DEBUG("reg_packet: %s", reg_packet_p);
- free(reg_packet_p);
+ char *reg_packet_p_debug;
+ reg_packet_p_debug = strndup(reg_packet, reg_packet_size);
+ LOG_DEBUG("reg_packet: %s", reg_packet_p_debug);
+ free(reg_packet_p_debug);
}
#endif
- gdb_put_packet(connection, reg_packet, DIV_ROUND_UP(reg_packet_size, 8) * 2);
+ gdb_put_packet(connection, reg_packet, reg_packet_size);
free(reg_packet);
free(reg_list);