diff options
author | Tom Tromey <tom@tromey.com> | 2020-11-30 01:37:10 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2020-11-30 01:37:10 -0700 |
commit | 88b91969e1ae5d23f81b86ae6cd3c85b284c6294 (patch) | |
tree | 33a677f9adac503851cc9e659d7e2b896e11dddd /gdb/expprint.c | |
parent | 1cd49c43f340e4de62922356ed859ee806e52f6f (diff) | |
download | gdb-88b91969e1ae5d23f81b86ae6cd3c85b284c6294.zip gdb-88b91969e1ae5d23f81b86ae6cd3c85b284c6294.tar.gz gdb-88b91969e1ae5d23f81b86ae6cd3c85b284c6294.tar.bz2 |
Remove per-language op_name functions
enum exp_opcode is created from all the .def files, but then each
language is required to implement its own op_name function to turn an
enum value to a string. This seemed over-complicated to me, and this
patch removes the per-language functions in favor of simply using the
.def names for all languages. Note that op_name is only used for
dumping expressions, which is a maintainer/debug feature.
Furthermore, I don't think there was any case where the .def name and
the string name differed.
gdb/ChangeLog
2020-11-30 Tom Tromey <tom@tromey.com>
* rust-lang.c (rust_op_name): Remove.
(exp_descriptor_rust): Update.
* parser-defs.h (op_name_standard): Don't declare.
(struct exp_descriptor) <op_name>: Remove.
* parse.c (exp_descriptor_standard): Update.
* opencl-lang.c (exp_descriptor_opencl): Update.
* m2-lang.c (m2_language::exp_descriptor_modula2): Update.
* f-lang.c (op_name_f): Remove.
(f_language::exp_descriptor_tab): Update.
* expression.h (op_name): Update.
* expprint.c (op_name): Rewrite.
(op_name_standard): Remove.
(dump_raw_expression, dump_subexp): Update.
* c-lang.c (exp_descriptor_c): Update.
* ax-gdb.c (gen_expr): Update.
* ada-lang.c (ada_op_name): Remove.
(ada_exp_descriptor): Update.
Diffstat (limited to 'gdb/expprint.c')
-rw-r--r-- | gdb/expprint.c | 23 |
1 files changed, 5 insertions, 18 deletions
diff --git a/gdb/expprint.c b/gdb/expprint.c index 29e6237..f1cf62e 100644 --- a/gdb/expprint.c +++ b/gdb/expprint.c @@ -685,26 +685,11 @@ op_string (enum exp_opcode op) static int dump_subexp_body (struct expression *exp, struct ui_file *, int); -/* Name for OPCODE, when it appears in expression EXP. */ - -const char * -op_name (struct expression *exp, enum exp_opcode opcode) -{ - if (opcode >= OP_UNUSED_LAST) - { - char *cell = get_print_cell (); - xsnprintf (cell, PRINT_CELL_SIZE, "unknown opcode: %u", - unsigned (opcode)); - return cell; - } - return exp->language_defn->expression_ops ()->op_name (opcode); -} - /* Default name for the standard operator OPCODE (i.e., one defined in the definition of enum exp_opcode). */ const char * -op_name_standard (enum exp_opcode opcode) +op_name (enum exp_opcode opcode) { switch (opcode) { @@ -719,6 +704,8 @@ op_name_standard (enum exp_opcode opcode) case name: \ return #name ; #include "std-operator.def" +#include "ada-operator.def" +#include "fortran-operator.def" #undef OP } } @@ -747,7 +734,7 @@ dump_raw_expression (struct expression *exp, struct ui_file *stream, { fprintf_filtered (stream, "\t%5d ", elt); - const char *opcode_name = op_name (exp, exp->elts[elt].opcode); + const char *opcode_name = op_name (exp->elts[elt].opcode); fprintf_filtered (stream, "%20s ", opcode_name); print_longest (stream, 'd', 0, exp->elts[elt].longconst); @@ -782,7 +769,7 @@ dump_subexp (struct expression *exp, struct ui_file *stream, int elt) fprintf_filtered (stream, " "); indent += 2; - fprintf_filtered (stream, "%-20s ", op_name (exp, exp->elts[elt].opcode)); + fprintf_filtered (stream, "%-20s ", op_name (exp->elts[elt].opcode)); elt = dump_subexp_body (exp, stream, elt); |