]> www.infradead.org Git - users/borneoa/openocd-next.git/commitdiff
target/breakpoints: fix types in `watchpoint_add_internal()`
authorEvgeniy Naydanov <evgeniy.naydanov@syntacore.com>
Mon, 16 Sep 2024 15:01:17 +0000 (18:01 +0300)
committerAntonio Borneo <borneo.antonio@gmail.com>
Mon, 11 Nov 2024 17:33:56 +0000 (17:33 +0000)
There was a conflict:
1. commit 2cd8ebf44d1a ("breakpoints: use 64-bit type for watchpoint mask
   and value")
2. commit 0bf3373e808a ("target/breakpoints: Use 'unsigned int' for
   length")

The second commit was created erlier, but merged later so the types of
`mask` and `value` became `uint32_t` in `watchpoint_add_internal()`.

This created a bug:
`WATCHPOINT_IGNORE_DATA_VALUE_MASK` is defined as `(~(uint64_t)0)`.
Truncation to uint32_t makes it so the comparisons with the constant
don't work.

Change-Id: I19c414c351f52aff72a60330d83c29db7bbca375
Signed-off-by: Evgeniy Naydanov <evgeniy.naydanov@syntacore.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8500
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Jan Matyas <jan.matyas@codasip.com>
Tested-by: jenkins
Reviewed-by: zapb <dev@zapb.de>
Reviewed-by: Karl Palsson <karlp@tweak.au>
src/target/breakpoints.c

index 2fbb69e07ab7c58141d4726e76520adfe5820daa..9378abcb141e435b98e4602d29f776b165888d28 100644 (file)
@@ -500,7 +500,7 @@ struct breakpoint *breakpoint_find(struct target *target, target_addr_t address)
 }
 
 static int watchpoint_add_internal(struct target *target, target_addr_t address,
-               unsigned int length, enum watchpoint_rw rw, uint32_t value, uint32_t mask)
+               unsigned int length, enum watchpoint_rw rw, uint64_t value, uint64_t mask)
 {
        struct watchpoint *watchpoint = target->watchpoints;
        struct watchpoint **watchpoint_p = &target->watchpoints;