gdb/
* valarith.c (value_equal_contents): New function. * value.h (value_equal_contents): Declare. * breakpoint.c (watchpoint_check): Use value_equal_contents instead of value_equal. gdb/testsuite/ * gdb.base/watchpoint.exp (test_watchpoint_in_big_blob): New function. (top level): Call test_watchpoint_in_big_blob. * gdb.base/watchpoint.c (buf): Change size to value too big for hardware watchpoints. (func3): Write to buf.
This commit is contained in:
parent
236f1d4def
commit
218d2fc650
7 changed files with 52 additions and 3 deletions
|
@ -1397,6 +1397,24 @@ value_equal (struct value *arg1, struct value *arg2)
|
|||
}
|
||||
}
|
||||
|
||||
/* Compare values based on their raw contents. Useful for arrays since
|
||||
value_equal coerces them to pointers, thus comparing just the address
|
||||
of the array instead of its contents. */
|
||||
|
||||
int
|
||||
value_equal_contents (struct value *arg1, struct value *arg2)
|
||||
{
|
||||
struct type *type1, *type2;
|
||||
|
||||
type1 = check_typedef (value_type (arg1));
|
||||
type2 = check_typedef (value_type (arg2));
|
||||
|
||||
return (TYPE_CODE (type1) == TYPE_CODE (type2)
|
||||
&& TYPE_LENGTH (type1) == TYPE_LENGTH (type2)
|
||||
&& memcmp (value_contents (arg1), value_contents (arg2),
|
||||
TYPE_LENGTH (type1)) == 0);
|
||||
}
|
||||
|
||||
/* Simulate the C operator < by returning 1
|
||||
iff ARG1's contents are less than ARG2's. */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue