diff options
author | Jim Blandy <jimb@codesourcery.com> | 2006-01-24 21:21:12 +0000 |
---|---|---|
committer | Jim Blandy <jimb@codesourcery.com> | 2006-01-24 21:21:12 +0000 |
commit | 166adb0250ea3a6f3b53508b203a1ca322d3b8dd (patch) | |
tree | 77e970b8b4b7b669dd3c9122fb64323d064878ea /gdb/valarith.c | |
parent | 1cf2cc49c59983ba024cdb69ae5883d82b4c84a2 (diff) | |
download | gdb-166adb0250ea3a6f3b53508b203a1ca322d3b8dd.tar.gz |
2006-01-24 Jim Blandy <jimb@redhat.com>
* valarith.c (binop_user_defined_p): Handle refs to typedefs.
Diffstat (limited to 'gdb/valarith.c')
-rw-r--r-- | gdb/valarith.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/gdb/valarith.c b/gdb/valarith.c index b3f360d22e3..2e5e97a0aee 100644 --- a/gdb/valarith.c +++ b/gdb/valarith.c @@ -285,9 +285,9 @@ value_subscripted_rvalue (struct value *array, struct value *idx, int lowerbound return v; } -/* Check to see if either argument is a structure. This is called so - we know whether to go ahead with the normal binop or look for a - user defined function instead. +/* Check to see if either argument is a structure, or a reference to + one. This is called so we know whether to go ahead with the normal + binop or look for a user defined function instead. For now, we do not overload the `=' operator. */ @@ -297,14 +297,17 @@ binop_user_defined_p (enum exp_opcode op, struct value *arg1, struct value *arg2 struct type *type1, *type2; if (op == BINOP_ASSIGN || op == BINOP_CONCAT) return 0; + type1 = check_typedef (value_type (arg1)); + if (TYPE_CODE (type1) == TYPE_CODE_REF) + type1 = check_typedef (TYPE_TARGET_TYPE (type1)); + type2 = check_typedef (value_type (arg2)); + if (TYPE_CODE (type2) == TYPE_CODE_REF) + type2 = check_typedef (TYPE_TARGET_TYPE (type2)); + return (TYPE_CODE (type1) == TYPE_CODE_STRUCT - || TYPE_CODE (type2) == TYPE_CODE_STRUCT - || (TYPE_CODE (type1) == TYPE_CODE_REF - && TYPE_CODE (TYPE_TARGET_TYPE (type1)) == TYPE_CODE_STRUCT) - || (TYPE_CODE (type2) == TYPE_CODE_REF - && TYPE_CODE (TYPE_TARGET_TYPE (type2)) == TYPE_CODE_STRUCT)); + || TYPE_CODE (type2) == TYPE_CODE_STRUCT); } /* Check to see if argument is a structure. This is called so |