mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-19 00:59:15 +08:00
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.
This commit is contained in:
@ -1,3 +1,23 @@
|
|||||||
|
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.
|
||||||
|
|
||||||
2020-11-30 Tom Tromey <tom@tromey.com>
|
2020-11-30 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
* eval.c (init_array_element): Remove.
|
* eval.c (init_array_element): Remove.
|
||||||
|
@ -127,8 +127,6 @@ static void replace_operator_with_call (expression_up *, int, int, int,
|
|||||||
|
|
||||||
static int possible_user_operator_p (enum exp_opcode, struct value **);
|
static int possible_user_operator_p (enum exp_opcode, struct value **);
|
||||||
|
|
||||||
static const char *ada_op_name (enum exp_opcode);
|
|
||||||
|
|
||||||
static const char *ada_decoded_op_name (enum exp_opcode);
|
static const char *ada_decoded_op_name (enum exp_opcode);
|
||||||
|
|
||||||
static int numeric_type_p (struct type *);
|
static int numeric_type_p (struct type *);
|
||||||
@ -13289,27 +13287,6 @@ ada_operator_check (struct expression *exp, int pos,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *
|
|
||||||
ada_op_name (enum exp_opcode opcode)
|
|
||||||
{
|
|
||||||
switch (opcode)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
return op_name_standard (opcode);
|
|
||||||
|
|
||||||
#define OP_DEFN(op, len, args, binop) case op: return #op;
|
|
||||||
ADA_OPERATORS;
|
|
||||||
#undef OP_DEFN
|
|
||||||
|
|
||||||
case OP_AGGREGATE:
|
|
||||||
return "OP_AGGREGATE";
|
|
||||||
case OP_CHOICES:
|
|
||||||
return "OP_CHOICES";
|
|
||||||
case OP_NAME:
|
|
||||||
return "OP_NAME";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* As for operator_length, but assumes PC is pointing at the first
|
/* As for operator_length, but assumes PC is pointing at the first
|
||||||
element of the operator, and gives meaningful results only for the
|
element of the operator, and gives meaningful results only for the
|
||||||
Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise. */
|
Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise. */
|
||||||
@ -13601,7 +13578,6 @@ static const struct exp_descriptor ada_exp_descriptor = {
|
|||||||
ada_print_subexp,
|
ada_print_subexp,
|
||||||
ada_operator_length,
|
ada_operator_length,
|
||||||
ada_operator_check,
|
ada_operator_check,
|
||||||
ada_op_name,
|
|
||||||
ada_dump_subexp_body,
|
ada_dump_subexp_body,
|
||||||
ada_evaluate_subexp
|
ada_evaluate_subexp
|
||||||
};
|
};
|
||||||
|
@ -2266,7 +2266,7 @@ gen_expr (struct expression *exp, union exp_element **pc,
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
error (_("Unsupported operator %s (%d) in expression."),
|
error (_("Unsupported operator %s (%d) in expression."),
|
||||||
op_name (exp, op), op);
|
op_name (op), op);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -846,7 +846,6 @@ const struct exp_descriptor exp_descriptor_c =
|
|||||||
print_subexp_standard,
|
print_subexp_standard,
|
||||||
operator_length_standard,
|
operator_length_standard,
|
||||||
operator_check_standard,
|
operator_check_standard,
|
||||||
op_name_standard,
|
|
||||||
dump_subexp_body_standard,
|
dump_subexp_body_standard,
|
||||||
evaluate_subexp_c
|
evaluate_subexp_c
|
||||||
};
|
};
|
||||||
|
@ -685,26 +685,11 @@ op_string (enum exp_opcode op)
|
|||||||
|
|
||||||
static int dump_subexp_body (struct expression *exp, struct ui_file *, int);
|
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
|
/* Default name for the standard operator OPCODE (i.e., one defined in
|
||||||
the definition of enum exp_opcode). */
|
the definition of enum exp_opcode). */
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
op_name_standard (enum exp_opcode opcode)
|
op_name (enum exp_opcode opcode)
|
||||||
{
|
{
|
||||||
switch (opcode)
|
switch (opcode)
|
||||||
{
|
{
|
||||||
@ -719,6 +704,8 @@ op_name_standard (enum exp_opcode opcode)
|
|||||||
case name: \
|
case name: \
|
||||||
return #name ;
|
return #name ;
|
||||||
#include "std-operator.def"
|
#include "std-operator.def"
|
||||||
|
#include "ada-operator.def"
|
||||||
|
#include "fortran-operator.def"
|
||||||
#undef OP
|
#undef OP
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -747,7 +734,7 @@ dump_raw_expression (struct expression *exp, struct ui_file *stream,
|
|||||||
{
|
{
|
||||||
fprintf_filtered (stream, "\t%5d ", elt);
|
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);
|
fprintf_filtered (stream, "%20s ", opcode_name);
|
||||||
|
|
||||||
print_longest (stream, 'd', 0, exp->elts[elt].longconst);
|
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, " ");
|
fprintf_filtered (stream, " ");
|
||||||
indent += 2;
|
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);
|
elt = dump_subexp_body (exp, stream, elt);
|
||||||
|
|
||||||
|
@ -171,7 +171,7 @@ extern struct value *evaluate_subexp_do_call (expression *exp,
|
|||||||
|
|
||||||
extern void print_expression (struct expression *, struct ui_file *);
|
extern void print_expression (struct expression *, struct ui_file *);
|
||||||
|
|
||||||
extern const char *op_name (struct expression *exp, enum exp_opcode opcode);
|
extern const char *op_name (enum exp_opcode opcode);
|
||||||
|
|
||||||
extern const char *op_string (enum exp_opcode);
|
extern const char *op_string (enum exp_opcode);
|
||||||
|
|
||||||
|
19
gdb/f-lang.c
19
gdb/f-lang.c
@ -1072,24 +1072,6 @@ print_subexp_f (struct expression *exp, int *pos,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Special expression names for Fortran. */
|
|
||||||
|
|
||||||
static const char *
|
|
||||||
op_name_f (enum exp_opcode opcode)
|
|
||||||
{
|
|
||||||
switch (opcode)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
return op_name_standard (opcode);
|
|
||||||
|
|
||||||
#define OP(name) \
|
|
||||||
case name: \
|
|
||||||
return #name ;
|
|
||||||
#include "fortran-operator.def"
|
|
||||||
#undef OP
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Special expression dumping for Fortran. */
|
/* Special expression dumping for Fortran. */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -1159,7 +1141,6 @@ const struct exp_descriptor f_language::exp_descriptor_tab =
|
|||||||
print_subexp_f,
|
print_subexp_f,
|
||||||
operator_length_f,
|
operator_length_f,
|
||||||
operator_check_f,
|
operator_check_f,
|
||||||
op_name_f,
|
|
||||||
dump_subexp_body_f,
|
dump_subexp_body_f,
|
||||||
evaluate_subexp_f
|
evaluate_subexp_f
|
||||||
};
|
};
|
||||||
|
@ -167,7 +167,6 @@ const struct exp_descriptor m2_language::exp_descriptor_modula2 =
|
|||||||
print_subexp_standard,
|
print_subexp_standard,
|
||||||
operator_length_standard,
|
operator_length_standard,
|
||||||
operator_check_standard,
|
operator_check_standard,
|
||||||
op_name_standard,
|
|
||||||
dump_subexp_body_standard,
|
dump_subexp_body_standard,
|
||||||
evaluate_subexp_modula2
|
evaluate_subexp_modula2
|
||||||
};
|
};
|
||||||
|
@ -948,7 +948,6 @@ const struct exp_descriptor exp_descriptor_opencl =
|
|||||||
print_subexp_standard,
|
print_subexp_standard,
|
||||||
operator_length_standard,
|
operator_length_standard,
|
||||||
operator_check_standard,
|
operator_check_standard,
|
||||||
op_name_standard,
|
|
||||||
dump_subexp_body_standard,
|
dump_subexp_body_standard,
|
||||||
evaluate_subexp_opencl
|
evaluate_subexp_opencl
|
||||||
};
|
};
|
||||||
|
@ -59,7 +59,6 @@ const struct exp_descriptor exp_descriptor_standard =
|
|||||||
print_subexp_standard,
|
print_subexp_standard,
|
||||||
operator_length_standard,
|
operator_length_standard,
|
||||||
operator_check_standard,
|
operator_check_standard,
|
||||||
op_name_standard,
|
|
||||||
dump_subexp_body_standard,
|
dump_subexp_body_standard,
|
||||||
evaluate_subexp_standard
|
evaluate_subexp_standard
|
||||||
};
|
};
|
||||||
|
@ -355,8 +355,6 @@ extern int operator_check_standard (struct expression *exp, int pos,
|
|||||||
(struct objfile *objfile, void *data),
|
(struct objfile *objfile, void *data),
|
||||||
void *data);
|
void *data);
|
||||||
|
|
||||||
extern const char *op_name_standard (enum exp_opcode);
|
|
||||||
|
|
||||||
extern bool parse_float (const char *p, int len,
|
extern bool parse_float (const char *p, int len,
|
||||||
const struct type *type, gdb_byte *data);
|
const struct type *type, gdb_byte *data);
|
||||||
|
|
||||||
@ -417,12 +415,6 @@ struct exp_descriptor
|
|||||||
void *data),
|
void *data),
|
||||||
void *data);
|
void *data);
|
||||||
|
|
||||||
/* Name of this operator for dumping purposes.
|
|
||||||
The returned value should never be NULL, even if EXP_OPCODE is
|
|
||||||
an unknown opcode (a string containing an image of the numeric
|
|
||||||
value of the opcode can be returned, for instance). */
|
|
||||||
const char *(*op_name) (enum exp_opcode);
|
|
||||||
|
|
||||||
/* Dump the rest of this (prefix) expression after the operator
|
/* Dump the rest of this (prefix) expression after the operator
|
||||||
itself has been printed. See dump_subexp_body_standard in
|
itself has been printed. See dump_subexp_body_standard in
|
||||||
(expprint.c). */
|
(expprint.c). */
|
||||||
|
@ -1680,22 +1680,6 @@ rust_operator_length (const struct expression *exp, int pc, int *oplenp,
|
|||||||
*argsp = args;
|
*argsp = args;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* op_name implementation for Rust. */
|
|
||||||
|
|
||||||
static const char *
|
|
||||||
rust_op_name (enum exp_opcode opcode)
|
|
||||||
{
|
|
||||||
switch (opcode)
|
|
||||||
{
|
|
||||||
case OP_AGGREGATE:
|
|
||||||
return "OP_AGGREGATE";
|
|
||||||
case OP_OTHERS:
|
|
||||||
return "OP_OTHERS";
|
|
||||||
default:
|
|
||||||
return op_name_standard (opcode);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* dump_subexp_body implementation for Rust. */
|
/* dump_subexp_body implementation for Rust. */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -1869,7 +1853,6 @@ static const struct exp_descriptor exp_descriptor_rust =
|
|||||||
rust_print_subexp,
|
rust_print_subexp,
|
||||||
rust_operator_length,
|
rust_operator_length,
|
||||||
rust_operator_check,
|
rust_operator_check,
|
||||||
rust_op_name,
|
|
||||||
rust_dump_subexp_body,
|
rust_dump_subexp_body,
|
||||||
rust_evaluate_subexp
|
rust_evaluate_subexp
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user