aboutsummaryrefslogtreecommitdiff
path: root/gdb/expprint.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2020-11-30 01:37:10 -0700
committerTom Tromey <tom@tromey.com>2020-11-30 01:37:10 -0700
commit88b91969e1ae5d23f81b86ae6cd3c85b284c6294 (patch)
tree33a677f9adac503851cc9e659d7e2b896e11dddd /gdb/expprint.c
parent1cd49c43f340e4de62922356ed859ee806e52f6f (diff)
downloadfsf-binutils-gdb-88b91969e1ae5d23f81b86ae6cd3c85b284c6294.zip
fsf-binutils-gdb-88b91969e1ae5d23f81b86ae6cd3c85b284c6294.tar.gz
fsf-binutils-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.c23
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);