diff options
author | Thiago Jung Bauermann <bauerman@br.ibm.com> | 2007-10-25 18:01:58 +0000 |
---|---|---|
committer | Thiago Jung Bauermann <bauerman@br.ibm.com> | 2007-10-25 18:01:58 +0000 |
commit | 27bc4d809ea2b4a3e4833806494db3a2fee83c64 (patch) | |
tree | 828f8e1b2e3e055419d3ce36e1d1cb41742d0a5a /gdb/eval.c | |
parent | 7678ef8fb055dd4853c7c6b25f739a8d74650899 (diff) | |
download | fsf-binutils-gdb-27bc4d809ea2b4a3e4833806494db3a2fee83c64.zip fsf-binutils-gdb-27bc4d809ea2b4a3e4833806494db3a2fee83c64.tar.gz fsf-binutils-gdb-27bc4d809ea2b4a3e4833806494db3a2fee83c64.tar.bz2 |
2007-10-25 Wu Zhou <woodzltc@cn.ibm.com>
Thiago Jung Bauermann <bauerman@br.ibm.com>
* c-exp.y (YYSTYPE): Add typed_val_decfloat for decimal
floating point in YYSTYPE union.
(DECFLOAT) Add token and expression element handling code.
(parse_number): Parse DFP constants, which end with suffix 'df',
'dd' or 'dl'. Return DECFLOAT.
* eval.c (evaluate_subexp_standard): Call value_from_decfloat to
handle OP_DECFLOAT.
* expression.h (enum exp_opcode): Add an opcode (OP_DECFLOAT)
for DFP constants.
(union exp_element): Add decfloatconst to represent DFP
elements, which is 16 bytes by default.
* parse.c (write_exp_elt_decfloatcst): New function to write a
decimal float const into the expression.
(operator_length_standard): Set operator length for OP_DECFLOAT
to 4.
* parser-defs.h (write_exp_elt_decfloatcst): Prototype.
* valarith.c (value_neg): Add code to handle the negation
operation of DFP values.
* value.c (value_from_decfloat): New function to get the value
from a decimal floating point.
* value.h (value_from_decfloat): Prototype.
Diffstat (limited to 'gdb/eval.c')
-rw-r--r-- | gdb/eval.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -456,6 +456,11 @@ evaluate_subexp_standard (struct type *expect_type, return value_from_double (exp->elts[pc + 1].type, exp->elts[pc + 2].doubleconst); + case OP_DECFLOAT: + (*pos) += 3; + return value_from_decfloat (expect_type, exp->elts[pc + 1].type, + exp->elts[pc + 2].decfloatconst); + case OP_VAR_VALUE: (*pos) += 3; if (noside == EVAL_SKIP) |