Hello,
The attached patch extends the existing support for evaluating
expressions using overloaded operators defined in C++ source. For
example, currently we do not support evaluation of a binary operation
if the first operand is a non-struct and the second operand is a
struct. To illustrate, if in C++ source we have
class Integer
{
...
};
int
operator+ (const int a, const Interger &b)
{
...
}
int an_int;
Integer an_integer;
then, at GDB prompt, we cannot do this
(gdb) p an_int + an_integer
The attached patch adds this support.
2012-06-01 Siva Chandra Reddy
Extend existing support for evaluating expressions using
overloaded operators.
* gdtypes.c (is_scalar_type): Make the function non-static.
(is_compound_type): New function to test if a type is a compound
type.
* gdbtypes.h (is_scalar_type, is_compound_type): Add
declarations for these functions.
* valarith.c (value_binop): Extend to handle overloaded
binary operations on compound types.
(value_x_binop): Extend to handle binary operations which have
atleast one compound value operand.
* valops.c (find_overload_match): Lookup overloaded operator
function when lookup for overloaded operator method throws an
exception.
testsuite/
* gdb.cp/operator.cc: Add test cases to test overloaded
binary operator evaluation.
* gdb.python/py-value.cc: Likewise
* gdb.cp/operator.exp: Add tests to test overloaded binary
operator evaluation.
* gdb.python/py-value-cc.exp: Likewise
* gdb.python/py-value.exp: Fix a test case to align it with the
new error message.
Thanks,
Siva Chandra