From bd49c137fee8212c7e64ce62cc07d398b1278b14 Mon Sep 17 00:00:00 2001 From: Wu Zhou Date: Wed, 6 Jul 2005 06:52:25 +0000 Subject: * f-exp.y (yyparse): Add code to support exponentiation expression. (yylex): Add code to scan exponentiation operator. * eval.c (evaluate_subexp_standard): Add support for BINOP_EXP. * valarith.c (value_binop): Reset errno to 0 before calling pow to do exponentiation operation. --- gdb/valarith.c | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) (limited to 'gdb/valarith.c') diff --git a/gdb/valarith.c b/gdb/valarith.c index 54a7fc6..ef03fb9 100644 --- a/gdb/valarith.c +++ b/gdb/valarith.c @@ -791,11 +791,12 @@ value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op) v = v1 / v2; break; - case BINOP_EXP: - v = pow (v1, v2); - if (errno) - error (_("Cannot perform exponentiation: %s"), safe_strerror (errno)); - break; + case BINOP_EXP: + errno = 0; + v = pow (v1, v2); + if (errno) + error (_("Cannot perform exponentiation: %s"), safe_strerror (errno)); + break; default: error (_("Integer-only operation on floating point number.")); @@ -929,11 +930,12 @@ value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op) v = v1 / v2; break; - case BINOP_EXP: - v = pow (v1, v2); - if (errno) - error (_("Cannot perform exponentiation: %s"), safe_strerror (errno)); - break; + case BINOP_EXP: + errno = 0; + v = pow (v1, v2); + if (errno) + error (_("Cannot perform exponentiation: %s"), safe_strerror (errno)); + break; case BINOP_REM: v = v1 % v2; @@ -1050,10 +1052,11 @@ value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op) error (_("Division by zero")); break; - case BINOP_EXP: - v = pow (v1, v2); - if (errno) - error (_("Cannot perform exponentiation: %s"), safe_strerror (errno)); + case BINOP_EXP: + errno = 0; + v = pow (v1, v2); + if (errno) + error (_("Cannot perform exponentiation: %s"), safe_strerror (errno)); break; case BINOP_REM: -- cgit v1.1