aboutsummaryrefslogtreecommitdiff
path: root/gdb/expression.h
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2019-04-01 21:01:09 +0100
committerAndrew Burgess <andrew.burgess@embecosm.com>2019-04-30 10:09:27 +0100
commit83228e93efa82f84a132f7cec44d0e760d4ad22b (patch)
treedbfdc49164342ae98d9bc119c5f5ea2d952181f0 /gdb/expression.h
parent6fdcd7cc87a5e345a1c09fcf898012d80eb43ee1 (diff)
downloadbinutils-83228e93efa82f84a132f7cec44d0e760d4ad22b.zip
binutils-83228e93efa82f84a132f7cec44d0e760d4ad22b.tar.gz
binutils-83228e93efa82f84a132f7cec44d0e760d4ad22b.tar.bz2
gdb/fortran: Introduce fortran-operator.def file
Future commits will add more Fortran specific expression operators. In preparation for these new operators, this commit adds a new fortran-operator.def file similar to how GDB already has ada-operator.def. I've moved UNOP_KIND the Fortran specific operator I introduced in commit 4d00f5d8f6c4 into this file, and renamed it to make it clearer that the operator is Fortran specific. I've then updated the Fortran exp_descriptor table (exp_descriptor_f) to use entirely Fortran specific functions that now handle UNOP_FORTRAN_KIND (the new name for UNOP_KIND). There should be no visible changes for standard users after this commit, though for developers, the output when 'set debug expression 1' is now better, before: (gdb) p kind (l1) Dump of expression @ 0x2ccc7a0, before conversion to prefix form: Language fortran, 5 elements, 16 bytes each. Index Opcode Hex Value String Value 0 OP_VAR_VALUE 42 *............... 1 OP_NULL 47730176 .N.............. 2 BINOP_INTDIV 47729184 J.............. 3 OP_VAR_VALUE 42 *............... 4 UNOP_KIND 78 N............... Dump of expression @ 0x2ccc7a0, after conversion to prefix form: Expression: `Invalid expression (gdb) and after: (gdb) p kind (l1) Dump of expression @ 0x294d0b0, before conversion to prefix form: Language fortran, 5 elements, 16 bytes each. Index Opcode Hex Value String Value 0 OP_VAR_VALUE 40 (............... 1 unknown opcode: 224 44088544 ................ 2 unknown opcode: 208 44087504 ................ 3 OP_VAR_VALUE 40 (............... 4 UNOP_FORTRAN_KIND 119 w............... Dump of expression @ 0x294d0b0, after conversion to prefix form: Expression: `KIND(test::l1)' Language fortran, 5 elements, 16 bytes each. 0 UNOP_FORTRAN_KIND 1 OP_VAR_VALUE Block @0x2a0bce0, symbol @0x2a0b8d0 (l1) $1 = 1 (gdb) gdb/ChangeLog: * gdb/expprint.c (dump_subexp_body_standard): Remove use of UNOP_KIND. * gdb/expression.h (exp_opcode): Include 'fortran-operator.def'. * gdb/f-exp.y (exp): Rename UNOP_KIND to UNOP_FORTRAN_KIND. * gdb/f-lang.c (evaluate_subexp_f): Likewise. (operator_length_f): New fuction. (print_subexp_f): New function. (op_name_f): New function. (dump_subexp_body_f): New function. (operator_check_f): New function. (exp_descriptor_f): Replace standard expression handling functions with new functions. * gdb/fortran-operator.def: New file. * gdb/parse.c (operator_length_standard): Remove use of UNOP_KIND. * gdb/std-operator.def: Remove UNOP_KIND.
Diffstat (limited to 'gdb/expression.h')
-rw-r--r--gdb/expression.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/gdb/expression.h b/gdb/expression.h
index 10e5f3e..841bf98 100644
--- a/gdb/expression.h
+++ b/gdb/expression.h
@@ -66,6 +66,7 @@ enum exp_opcode : uint8_t
/* Language specific operators. */
#include "ada-operator.def"
+#include "fortran-operator.def"
#undef OP