forked from auracaster/openocd
target/breakpoints: drop duplicate breakpoint/watchpoint "clear_target" functions
We need to cleanup watchpoints on all targets in SMP group when GDB connects. Otherwise, the targets will not be consistent. Once thats fixed, both *_clear_target functions clearly duplicate the corresponding *_remove_all functions. Change-Id: I8e85dbc66fd3e596990d631ed2aed22959a8ca60 Signed-off-by: Samuel Obuch <samuel.obuch@espressif.com> Reviewed-on: https://review.openocd.org/c/openocd/+/9086 Reviewed-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com> Tested-by: jenkins Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
This commit is contained in:
committed by
Tomas Vanek
parent
896738264e
commit
e5888bda38
@@ -412,6 +412,8 @@ static int watchpoint_free(struct target *target, struct watchpoint *watchpoint_
|
||||
|
||||
static int watchpoint_remove_all_internal(struct target *target)
|
||||
{
|
||||
LOG_TARGET_DEBUG(target, "Delete all watchpoints");
|
||||
|
||||
struct watchpoint *watchpoint = target->watchpoints;
|
||||
int retval = ERROR_OK;
|
||||
|
||||
@@ -465,27 +467,6 @@ int watchpoint_remove_all(struct target *target)
|
||||
return breakpoint_watchpoint_remove_all(target, WATCHPOINT);
|
||||
}
|
||||
|
||||
int breakpoint_clear_target(struct target *target)
|
||||
{
|
||||
int retval = ERROR_OK;
|
||||
|
||||
if (target->smp) {
|
||||
struct target_list *head;
|
||||
|
||||
foreach_smp_target(head, target->smp_targets) {
|
||||
struct target *curr = head->target;
|
||||
int status = breakpoint_remove_all_internal(curr);
|
||||
|
||||
if (status != ERROR_OK)
|
||||
retval = status;
|
||||
}
|
||||
} else {
|
||||
retval = breakpoint_remove_all_internal(target);
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
struct breakpoint *breakpoint_find(struct target *target, target_addr_t address)
|
||||
{
|
||||
struct breakpoint *breakpoint = target->breakpoints;
|
||||
@@ -641,23 +622,6 @@ int watchpoint_remove(struct target *target, target_addr_t address)
|
||||
return retval;
|
||||
}
|
||||
|
||||
int watchpoint_clear_target(struct target *target)
|
||||
{
|
||||
LOG_TARGET_DEBUG(target, "Delete all watchpoints");
|
||||
|
||||
struct watchpoint *watchpoint = target->watchpoints;
|
||||
int retval = ERROR_OK;
|
||||
|
||||
while (watchpoint) {
|
||||
struct watchpoint *tmp = watchpoint;
|
||||
watchpoint = watchpoint->next;
|
||||
int status = watchpoint_free(target, tmp);
|
||||
if (status != ERROR_OK)
|
||||
retval = status;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
int watchpoint_hit(struct target *target, enum watchpoint_rw *rw,
|
||||
target_addr_t *address)
|
||||
{
|
||||
|
||||
@@ -50,7 +50,6 @@ struct watchpoint {
|
||||
int unique_id;
|
||||
};
|
||||
|
||||
int breakpoint_clear_target(struct target *target);
|
||||
int breakpoint_add(struct target *target,
|
||||
target_addr_t address, unsigned int length, enum breakpoint_type type);
|
||||
int context_breakpoint_add(struct target *target,
|
||||
@@ -69,7 +68,6 @@ static inline void breakpoint_hw_set(struct breakpoint *breakpoint, unsigned int
|
||||
breakpoint->number = hw_number;
|
||||
}
|
||||
|
||||
int watchpoint_clear_target(struct target *target);
|
||||
int watchpoint_add(struct target *target,
|
||||
target_addr_t address, unsigned int length,
|
||||
enum watchpoint_rw rw, uint64_t value, uint64_t mask);
|
||||
|
||||
Reference in New Issue
Block a user