target/breakpoints.c: add breakpoint intersection detection

Modify the breakpoint insertion logic to include intersection detection
between breakpoints.

Change-Id: I294bea83b18335c2f304ddd99361872eadaaa684
Signed-off-by: Kulyatskaya Alexandra <a.kulyatskaya@syntacore.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/9146
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
Kulyatskaya Alexandra
2025-06-24 15:37:48 +03:00
committed by Antonio Borneo
parent eef37df3aa
commit 181547327f
4 changed files with 34 additions and 0 deletions
+8
View File
@@ -16,6 +16,7 @@
#include <helper/log.h>
#include "breakpoints.h"
#include "smp.h"
#include "helper/util.h"
enum breakpoint_watchpoint {
BREAKPOINT,
@@ -56,6 +57,13 @@ static int breakpoint_add_internal(struct target *target,
address, breakpoint->unique_id);
return ERROR_TARGET_DUPLICATE_BREAKPOINT;
}
if (type == BKPT_SOFT &&
is_memory_regions_overlap(address, length, breakpoint->address, breakpoint->length)) {
LOG_TARGET_ERROR(target, "Breakpoint intersects with another one at " TARGET_ADDR_FMT
" of length %u (BP %" PRIu32 ")", breakpoint->address,
breakpoint->length, breakpoint->unique_id);
return ERROR_TARGET_INTERSECT_BREAKPOINT;
}
breakpoint_p = &breakpoint->next;
breakpoint = breakpoint->next;
}
+1
View File
@@ -796,6 +796,7 @@ int target_profiling_default(struct target *target, uint32_t *samples, uint32_t
#define ERROR_TARGET_SIZE_NOT_SUPPORTED (-314)
#define ERROR_TARGET_PACKING_NOT_SUPPORTED (-315)
#define ERROR_TARGET_HALTED_DO_RESUME (-316) /* used to workaround incorrect debug halt */
#define ERROR_TARGET_INTERSECT_BREAKPOINT (-317)
extern bool get_target_reset_nag(void);