* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
***************************************************************************/
#ifdef HAVE_CONFIG_H
#include "target/target.h"
#include "target/target_type.h"
#include "helper/log.h"
+#include "helper/types.h"
#include "rtos.h"
-#include "helper/log.h"
#include "rtos_standard_stackings.h"
#include <target/register.h>
#include "server/gdb_server.h"
return ERROR_FAIL;
}
#ifdef PHYS
- target->type->read_phys_memory(target, pa, size, count, buffer);
+ target_read_phys_memory(target, pa, size, count, buffer);
#endif
- target->type->read_memory(target, address, size, count, buffer);
+ target_read_memory(target, address, size, count, buffer);
return ERROR_OK;
}
for (i = 0; i < reg_list_size; i++)
reg_packet_size += reg_list[i]->size;
+ assert(reg_packet_size > 0);
+
*hex_reg_list = malloc(DIV_ROUND_UP(reg_packet_size, 8) * 2);
hex_string = *hex_reg_list;
{
unsigned int i;
*symbol_list = (symbol_table_elem_t *)
- malloc(sizeof(symbol_table_elem_t) / sizeof(char *));
+ malloc(sizeof(symbol_table_elem_t) * ARRAY_SIZE(linux_symbol_list));
- for (i = 0; i < sizeof(linux_symbol_list) / sizeof(char *); i++)
+ for (i = 0; i < ARRAY_SIZE(linux_symbol_list); i++)
(*symbol_list)[i].symbol_name = linux_symbol_list[i];
return 0;
char *tmp_str = (char *)calloc(1, str_size + 50);
char *tmp_str_ptr = tmp_str;
- /* discriminate cuurent task */
+ /* discriminate current task */
if (temp->status == 3)
tmp_str_ptr += sprintf(tmp_str_ptr, "%s",
pid_current);
tmp_str_ptr += sprintf(tmp_str_ptr, "%s", " | ");
sprintf(tmp_str_ptr, "%s", name);
sprintf(tmp_str_ptr, "%s", temp->name);
- char *hex_str =
- (char *)calloc(1, strlen(tmp_str) * 2 + 1);
- str_to_hex(hex_str, tmp_str);
- gdb_put_packet(connection, hex_str, strlen(hex_str));
+ char *hex_str = (char *)calloc(1, strlen(tmp_str) * 2 + 1);
+ int pkt_len = hexify(hex_str, tmp_str, 0, strlen(tmp_str) * 2 + 1);
+ gdb_put_packet(connection, hex_str, pkt_len);
free(hex_str);
free(tmp_str);
return ERROR_OK;
break;
case 'q':
- if ((strstr(packet, "qSymbol"))) {
+ if (strncmp(packet, "qSymbol", 7) == 0) {
if (rtos_qsymbol(connection, packet, packet_size) == 1) {
linux_compute_virt2phys(target,
target->rtos->
}
break;
- } else if (strstr(packet, "qfThreadInfo")) {
+ } else if (strncmp(packet, "qfThreadInfo", 12) == 0) {
if (linux_os->thread_list == NULL) {
retval = linux_gdb_thread_packet(target,
connection,
packet_size);
break;
}
- } else if (strstr(packet, "qsThreadInfo")) {
+ } else if (strncmp(packet, "qsThreadInfo", 12) == 0) {
gdb_put_packet(connection, "l", 1);
break;
- } else if (strstr(packet, "qThreadExtraInfo,")) {
+ } else if (strncmp(packet, "qThreadExtraInfo,", 17) == 0) {
linux_thread_extra_info(target, connection, packet,
packet_size);
break;