#include "breakpoints.h"
#include "flash.h"
#include "target_request.h"
+#include "configuration.h"
#include <string.h>
#include <errno.h>
else if (reply == '-')
{
/* Stop sending output packets for now */
- log_setCallback(NULL, NULL);
+ log_remove_callback(gdb_log_callback, connection);
WARNING("negative reply, retrying");
}
else if (reply == 0x3)
else if (reply == '-')
{
/* Stop sending output packets for now */
- log_setCallback(NULL, NULL);
+ log_remove_callback(gdb_log_callback, connection);
WARNING("negative reply, retrying");
}
else
bin_size = strlen(line);
- hex_buffer = malloc(bin_size*2 + 4);
+ hex_buffer = malloc(bin_size*2 + 2);
hex_buffer[0] = 'O';
for (i=0; i<bin_size; i++)
snprintf(hex_buffer + 1 + i*2, 3, "%2.2x", line[i]);
- hex_buffer[bin_size*2+1] = '0';
- hex_buffer[bin_size*2+2] = 'a';
- hex_buffer[bin_size*2+3] = 0x0;
+ hex_buffer[bin_size*2+1] = 0;
- gdb_put_packet(connection, hex_buffer, bin_size*2 + 3);
+ gdb_put_packet(connection, hex_buffer, bin_size*2 + 1);
free(hex_buffer);
return ERROR_OK;
int gdb_output(struct command_context_s *context, char* line)
{
/* this will be dumped to the log and also sent as an O packet if possible */
- USER(line);
+ USER_SAMELINE(line);
return ERROR_OK;
}
if (target->gdb_program_script)
{
- script = fopen(target->gdb_program_script, "r");
+ script = open_file_from_path(cmd_ctx, target->gdb_program_script, "r");
if (!script)
{
ERROR("couldn't open script file %s", target->gdb_program_script);
if (gdb_connection->frontend_state == TARGET_RUNNING)
{
/* stop forwarding log packets! */
- log_setCallback(NULL, NULL);
+ log_remove_callback(gdb_log_callback, connection);
if (gdb_connection->ctrl_c)
{
return ERROR_OK;
}
-
+\r
+\r
int gdb_new_connection(connection_t *connection)
{
gdb_connection_t *gdb_connection = malloc(sizeof(gdb_connection_t));
}
target_unregister_event_callback(gdb_target_callback_event_handler, connection);
+ log_remove_callback(gdb_log_callback, connection);
return ERROR_OK;
}
cmd[(packet_size - 6)/2] = 0x0;
/* We want to print all debug output to GDB connection */
- log_setCallback(gdb_log_callback, connection);
+ log_add_callback(gdb_log_callback, connection);
target_call_timer_callbacks();
command_run_line(cmd_ctx, cmd);
free(cmd);
if (!strcmp(packet, "vFlashDone"))
{
u32 written;
- char *error_str;
/* process the flashing buffer. No need to erase as GDB
* always issues a vFlashErase first. */
- if ((result = flash_write(gdb_service->target, gdb_connection->vflash_image, &written, &error_str, NULL, 0)) != ERROR_OK)
+ if ((result = flash_write(gdb_service->target, gdb_connection->vflash_image, &written, 0)) != ERROR_OK)
{
if (result == ERROR_FLASH_DST_OUT_OF_BANK)
gdb_put_packet(connection, "E.memtype", 9);
else
gdb_send_error(connection, EIO);
-
- if (error_str)
- {
- ERROR("flash writing failed: %s", error_str);
- free(error_str);
}
- }
else
{
DEBUG("wrote %u bytes from vFlash image to flash", written);
return;
}
- char *t = allocPrintf(format, args);
+ char *t = alloc_printf(format, args);
if (t == NULL)
return;
* forward log output until the target is halted */
gdb_connection_t *gdb_con = connection->priv;
gdb_con->frontend_state = TARGET_RUNNING;
- log_setCallback(gdb_log_callback, connection);
+ log_add_callback(gdb_log_callback, connection);
gdb_step_continue_packet(connection, target, packet, packet_size);
}
break;