(*breakpoint_p)->length = length;
(*breakpoint_p)->type = type;
(*breakpoint_p)->set = 0;
- (*breakpoint_p)->orig_instr = malloc(CEIL(length, 8));
+ (*breakpoint_p)->orig_instr = malloc(length);
(*breakpoint_p)->next = NULL;
if ((retval = target->type->add_breakpoint(target, *breakpoint_p)) != ERROR_OK)
switch (retval)
{
case ERROR_TARGET_RESOURCE_NOT_AVAILABLE:
- INFO("can't add %s breakpoint, resource not available", breakpoint_type_strings[(*breakpoint_p)->type]);
- free (*breakpoint_p);
+ LOG_INFO("can't add %s breakpoint, resource not available", breakpoint_type_strings[(*breakpoint_p)->type]);
+ free((*breakpoint_p)->orig_instr);
+ free(*breakpoint_p);
*breakpoint_p = NULL;
return retval;
break;
case ERROR_TARGET_NOT_HALTED:
- INFO("can't add breakpoint while target is running");
- free (*breakpoint_p);
+ LOG_INFO("can't add breakpoint while target is running");
+ free((*breakpoint_p)->orig_instr);
+ free(*breakpoint_p);
*breakpoint_p = NULL;
return retval;
break;
default:
- ERROR("unknown error");
+ LOG_ERROR("unknown error");
exit(-1);
break;
}
}
- DEBUG("added %s breakpoint at 0x%8.8x of length 0x%8.8x",
+ LOG_DEBUG("added %s breakpoint at 0x%8.8x of length 0x%8.8x",
breakpoint_type_strings[(*breakpoint_p)->type],
(*breakpoint_p)->address, (*breakpoint_p)->length);
switch (retval)
{
case ERROR_TARGET_NOT_HALTED:
- INFO("can't remove breakpoint while target is running");
+ LOG_INFO("can't remove breakpoint while target is running");
return retval;
break;
default:
- ERROR("unknown error");
+ LOG_ERROR("unknown error");
exit(-1);
break;
}
}
else
{
- ERROR("no breakpoint at address 0x%8.8x found", address);
+ LOG_ERROR("no breakpoint at address 0x%8.8x found", address);
}
return ERROR_OK;
switch (retval)
{
case ERROR_TARGET_RESOURCE_NOT_AVAILABLE:
- INFO("can't add %s watchpoint, resource not available", watchpoint_rw_strings[(*watchpoint_p)->rw]);
+ LOG_INFO("can't add %s watchpoint, resource not available", watchpoint_rw_strings[(*watchpoint_p)->rw]);
free (*watchpoint_p);
*watchpoint_p = NULL;
return retval;
break;
case ERROR_TARGET_NOT_HALTED:
- INFO("can't add watchpoint while target is running");
+ LOG_INFO("can't add watchpoint while target is running");
free (*watchpoint_p);
*watchpoint_p = NULL;
return retval;
break;
default:
- ERROR("unknown error");
+ LOG_ERROR("unknown error");
exit(-1);
break;
}
}
- DEBUG("added %s watchpoint at 0x%8.8x of length 0x%8.8x",
+ LOG_DEBUG("added %s watchpoint at 0x%8.8x of length 0x%8.8x",
watchpoint_rw_strings[(*watchpoint_p)->rw],
(*watchpoint_p)->address, (*watchpoint_p)->length);
{
if ((retval = target->type->remove_watchpoint(target, watchpoint)) != ERROR_OK)
{
- ERROR("BUG: can't remove watchpoint");
- exit(-1);
+ switch (retval)
+ {
+ case ERROR_TARGET_NOT_HALTED:
+ LOG_INFO("can't remove watchpoint while target is running");
+ return retval;
+ break;
+ default:
+ LOG_ERROR("unknown error");
+ exit(-1);
+ break;
+ }
}
(*watchpoint_p) = watchpoint->next;
free(watchpoint);
}
else
{
- ERROR("no watchpoint at address 0x%8.8x found", address);
+ LOG_ERROR("no watchpoint at address 0x%8.8x found", address);
}
return ERROR_OK;