target: cortex_m: add comment for breakpoint of length 3

Add a comment in the breakpoint code to clarify the check for the
odd breakpoint length of 3 bytes, introduced by [1].

[1]: commit 0a5e03c12a ("cortex_m.c: Use two byte breakpoint for
     32bit Thumb-2 request").

Change-Id: I024863d10078b5d9062c876aa59ccf70a81bf641
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/9139
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Tested-by: jenkins
This commit is contained in:
Antonio Borneo
2025-09-22 09:53:43 +02:00
parent 04da6e2c62
commit 8b43a967e5

View File

@@ -2041,6 +2041,15 @@ int cortex_m_unset_breakpoint(struct target *target, struct breakpoint *breakpoi
int cortex_m_add_breakpoint(struct target *target, struct breakpoint *breakpoint) int cortex_m_add_breakpoint(struct target *target, struct breakpoint *breakpoint)
{ {
/*
* GDB packets Z0 and z0 provide the 'kind' parameter that is target-specific
* and typically indicates the size in bytes of the breakpoint.
* But for 32-bit Thumb mode (Thumb-2) breakpoint, GDB provides 'kind = 3' to
* be used to derive the length information. See:
* https://sourceware.org/gdb/current/onlinedocs/gdb.html/ARM-Breakpoint-Kinds.html
* Since there isn't a four byte Thumb-2 breakpoint instruction, always use
* the two bytes breakpoint instruction.
*/
if (breakpoint->length == 3) { if (breakpoint->length == 3) {
LOG_TARGET_DEBUG(target, "Using a two byte breakpoint for 32bit Thumb-2 request"); LOG_TARGET_DEBUG(target, "Using a two byte breakpoint for 32bit Thumb-2 request");
breakpoint->length = 2; breakpoint->length = 2;