Fix breackpoint_add for rtos swbp (#734)
breakpoint_add should use rtos only if request is done by gdb. Signed-off-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com> Change-Id: I779d1a905c6a3640869dca162e3cc001919e8f42 Signed-off-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com>
This commit is contained in:
parent
dc49ed8ae2
commit
8ae41e86e1
|
@ -1785,7 +1785,13 @@ static int gdb_breakpoint_watchpoint_packet(struct connection *connection,
|
||||||
case 0:
|
case 0:
|
||||||
case 1:
|
case 1:
|
||||||
if (packet[0] == 'Z') {
|
if (packet[0] == 'Z') {
|
||||||
retval = breakpoint_add(target, address, size, bp_type);
|
struct target *bp_target = target;
|
||||||
|
if (target->rtos && bp_type == BKPT_SOFT) {
|
||||||
|
bp_target = rtos_swbp_target(target, address, size, bp_type);
|
||||||
|
if (!bp_target)
|
||||||
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
|
retval = breakpoint_add(bp_target, address, size, bp_type);
|
||||||
if (retval != ERROR_OK) {
|
if (retval != ERROR_OK) {
|
||||||
retval = gdb_error(connection, retval);
|
retval = gdb_error(connection, retval);
|
||||||
if (retval != ERROR_OK)
|
if (retval != ERROR_OK)
|
||||||
|
|
|
@ -218,19 +218,10 @@ int breakpoint_add(struct target *target,
|
||||||
uint32_t length,
|
uint32_t length,
|
||||||
enum breakpoint_type type)
|
enum breakpoint_type type)
|
||||||
{
|
{
|
||||||
if (target->smp) {
|
if (target->smp && type == BKPT_HARD) {
|
||||||
struct target_list *head;
|
struct target_list *list_node;
|
||||||
|
foreach_smp_target(list_node, target->smp_targets) {
|
||||||
if (type == BKPT_SOFT) {
|
struct target *curr = list_node->target;
|
||||||
head = list_first_entry(target->smp_targets, struct target_list, lh);
|
|
||||||
struct target *curr = head->target;
|
|
||||||
if (target->rtos)
|
|
||||||
curr = rtos_swbp_target(target, address, length, type);
|
|
||||||
return breakpoint_add_internal(curr, address, length, type);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach_smp_target(head, target->smp_targets) {
|
|
||||||
struct target *curr = head->target;
|
|
||||||
int retval = breakpoint_add_internal(curr, address, length, type);
|
int retval = breakpoint_add_internal(curr, address, length, type);
|
||||||
if (retval != ERROR_OK)
|
if (retval != ERROR_OK)
|
||||||
return retval;
|
return retval;
|
||||||
|
|
Loading…
Reference in New Issue