diff options
author | Wu Zhou <woodzltc@cn.ibm.com> | 2005-07-06 06:52:25 +0000 |
---|---|---|
committer | Wu Zhou <woodzltc@cn.ibm.com> | 2005-07-06 06:52:25 +0000 |
commit | bd49c137fee8212c7e64ce62cc07d398b1278b14 (patch) | |
tree | 1e41f9c36b171df9b614b3e443aaee1fbbe020ab /gdb/valarith.c | |
parent | a0c5fbcf0e1c6fdb3672d3bfc071b1a57a7b27bf (diff) | |
download | gdb-bd49c137fee8212c7e64ce62cc07d398b1278b14.zip gdb-bd49c137fee8212c7e64ce62cc07d398b1278b14.tar.gz gdb-bd49c137fee8212c7e64ce62cc07d398b1278b14.tar.bz2 |
* 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.
Diffstat (limited to 'gdb/valarith.c')
-rw-r--r-- | gdb/valarith.c | 31 |
1 files changed, 17 insertions, 14 deletions
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: |