diff options
author | Mark Kettenis <kettenis@gnu.org> | 2005-02-20 01:19:24 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@gnu.org> | 2005-02-20 01:19:24 +0000 |
commit | a6c442d88114a76fe77ff3e3f6aa62993703759d (patch) | |
tree | 5ab13b27752d31560191470bb6ae89fad5e2349c /gdb/value.c | |
parent | 0ac0f72ae7b02217b8525a62c776b5aa190e185f (diff) | |
download | gdb-a6c442d88114a76fe77ff3e3f6aa62993703759d.zip gdb-a6c442d88114a76fe77ff3e3f6aa62993703759d.tar.gz gdb-a6c442d88114a76fe77ff3e3f6aa62993703759d.tar.bz2 |
* value.h (value_contents_equal): New prototype.
* value.c (value_contents_equal): New function.
* varobj.c: Include "exceptions.h" and "gdb_assert.h". Don't
include <math.h>.
(varobj_set_value): Initialize error to zero.
(varobj_update): Rename error2 to error and initialize it to zero.
Slightly change the wording of some comments.
(my_value_equal): Reimplement using TRY_CATCH and
value_contents_equal.
Diffstat (limited to 'gdb/value.c')
-rw-r--r-- | gdb/value.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gdb/value.c b/gdb/value.c index eb0cc2c..1ab5f79 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -358,6 +358,26 @@ value_contents_writeable (struct value *value) return value->aligner.contents; } +/* Return non-zero if VAL1 and VAL2 have the same contents. Note that + this function is different from value_equal; in C the operator == + can return 0 even if the two values being compared are equal. */ + +int +value_contents_equal (struct value *val1, struct value *val2) +{ + struct type *type1; + struct type *type2; + int len; + + type1 = check_typedef (value_type (val1)); + type2 = check_typedef (value_type (val2)); + len = TYPE_LENGTH (type1); + if (len != TYPE_LENGTH (type2)) + return 0; + + return (memcmp (value_contents (val1), value_contents (val2), len) == 0); +} + int value_optimized_out (struct value *value) { |