Skip to content

Commit

Permalink
target/breakpoints: fix types in watchpoint_add_internal()
Browse files Browse the repository at this point in the history
There was a conflict:
1. commit 2cd8ebf ("breakpoints: use 64-bit type for watchpoint mask
   and value")
2. commit 0bf3373 ("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 <[email protected]>
  • Loading branch information
en-sc committed Sep 16, 2024
1 parent 269c57e commit 4c45762
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion src/target/breakpoints.c
Original file line number Diff line number Diff line change
Expand Up @@ -542,7 +542,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;
Expand Down

0 comments on commit 4c45762

Please sign in to comment.