diff options
author | Tom Tromey <tom@tromey.com> | 2021-03-08 07:27:57 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2021-03-08 07:28:41 -0700 |
commit | 1eaebe02cfe78229d78ac27f5bd6651e1c1af863 (patch) | |
tree | 870c2965ac8dada5ed4527853f829c3ddbbaf5a2 /gdb/parser-defs.h | |
parent | f2a98603a807101722f12b8d7a1aca9651deb133 (diff) | |
download | binutils-gdb-1eaebe02cfe78229d78ac27f5bd6651e1c1af863.tar.gz |
Remove union exp_element
This removes union exp_element functions that either create such
elements or walk them. struct expression no longer holds
exp_elements. A couple of language_defn methods are also removed, as
they are obsolete.
Note that this patch also removes the print_expression code. The only
in-tree caller of this was from dump_prefix_expression, which is only
called when expression debugging is enabled. Implementing this would
involve a fair amount of code, and it seems to me that prefix dumping
is preferable anyway, as it is unambiguous. So, I have not
reimplemented this feature.
gdb/ChangeLog
2021-03-08 Tom Tromey <tom@tromey.com>
* value.h (evaluate_subexp_with_coercion): Don't declare.
* parse.c (exp_descriptor_standard): Remove.
(expr_builder::expr_builder, expr_builder::release): Update.
(expression::expression): Remove size_t parameter.
(expression::~expression): Simplify.
(expression::resize): Remove.
(write_exp_elt, write_exp_elt_opcode, write_exp_elt_sym)
(write_exp_elt_msym, write_exp_elt_block, write_exp_elt_objfile)
(write_exp_elt_longcst, write_exp_elt_floatcst)
(write_exp_elt_type, write_exp_elt_intern, write_exp_string)
(write_exp_string_vector, write_exp_bitstring): Remove.
* p-lang.h (class pascal_language) <opcode_print_table,
op_print_tab>: Remove.
* p-lang.c (pascal_language::op_print_tab): Remove.
* opencl-lang.c (class opencl_language) <opcode_print_table>:
Remove.
* objc-lang.c (objc_op_print_tab): Remove.
(class objc_language) <opcode_print_table>: Remove.
* m2-lang.h (class m2_language) <opcode_print_table,
op_print_tab>: Remove.
* m2-lang.c (m2_language::op_print_tab): Remove.
* language.h (struct language_defn) <post_parser, expression_ops,
opcode_print_table>: Remove.
* language.c (language_defn::expression_ops)
(auto_or_unknown_language::opcode_print_table): Remove.
* go-lang.h (class go_language) <opcode_print_table,
op_print_tab>: Remove.
* go-lang.c (go_language::op_print_tab): Remove.
* f-lang.h (class f_language) <opcode_print_table>: Remove
<op_print_tab>: Remove.
* f-lang.c (f_language::op_print_tab): Remove.
* expression.h (union exp_element): Remove.
(struct expression): Remove size_t parameter from constructor.
<resize>: Remove.
<first_opcode>: Update.
<nelts, elts>: Remove.
(EXP_ELEM_TO_BYTES, BYTES_TO_EXP_ELEM): Remove.
(evaluate_subexp_standard, print_expression, op_string)
(dump_raw_expression): Don't declare.
* expprint.c (print_expression, print_subexp)
(print_subexp_funcall, print_subexp_standard, op_string)
(dump_raw_expression, dump_subexp, dump_subexp_body)
(dump_subexp_body_funcall, dump_subexp_body_standard): Remove.
(dump_prefix_expression): Update.
* eval.c (evaluate_subexp): Remove.
(evaluate_expression, evaluate_type): Update.
(evaluate_subexpression_type): Remove.
(fetch_subexp_value): Remove "pc" parameter. Update.
(extract_field_op, evaluate_struct_tuple, evaluate_funcall)
(evaluate_subexp_standard, evaluate_subexp_for_address)
(evaluate_subexp_with_coercion, evaluate_subexp_for_sizeof)
(evaluate_subexp_for_cast): Remove.
(parse_and_eval_type): Update.
* dtrace-probe.c (dtrace_probe::compile_to_ax): Update.
* d-lang.c (d_op_print_tab): Remove.
(class d_language) <opcode_print_table>: Remove.
* c-lang.h (c_op_print_tab): Don't declare.
* c-lang.c (c_op_print_tab): Remove.
(class c_language, class cplus_language, class asm_language, class
minimal_language) <opcode_print_table>: Remove.
* breakpoint.c (update_watchpoint, watchpoint_check)
(watchpoint_exp_is_const, watch_command_1): Update.
* ax-gdb.h (union exp_element): Don't declare.
* ax-gdb.c (const_var_ref, const_expr, maybe_const_expr)
(gen_repeat, gen_sizeof, gen_expr_for_cast, gen_expr)
(gen_expr_binop_rest): Remove.
(gen_trace_for_expr, gen_eval_for_expr, gen_printf): Update.
* ada-lang.c (ada_op_print_tab): Remove.
(class ada_language) <post_parser, opcode_print_table>: Remove.
Diffstat (limited to 'gdb/parser-defs.h')
-rw-r--r-- | gdb/parser-defs.h | 179 |
1 files changed, 0 insertions, 179 deletions
diff --git a/gdb/parser-defs.h b/gdb/parser-defs.h index 69325596f36..3e81e0b8b3c 100644 --- a/gdb/parser-defs.h +++ b/gdb/parser-defs.h @@ -71,29 +71,15 @@ struct expr_builder expout->op = std::move (op); } - /* The size of the expression above. */ - - size_t expout_size; - /* The expression related to this parser state. */ expression_up expout; - - /* The number of elements already in the expression. This is used - to know where to put new elements. */ - - size_t expout_ptr; }; /* This is used for expression completion. */ struct expr_completion_state { - /* The index of the last struct expression directly before a '.' or - '->'. This is set when parsing and is only used when completing a - field name. It is -1 if no dereference operation was found. */ - int expout_last_struct = -1; - /* The last struct expression directly before a '.' or '->'. This is set when parsing and is only used when completing a field name. It is nullptr if no dereference operation was found. */ @@ -157,11 +143,6 @@ struct parser_state : public expr_builder return val; } - /* Mark the current index as the starting location of a structure - expression. This is used when completing on field names. */ - - void mark_struct_expression (); - /* Mark the given operation as the starting location of a structure expression. This is used when completing on field names. */ @@ -376,173 +357,13 @@ struct objc_class_str int theclass; }; -/* Reverse an expression from suffix form (in which it is constructed) - to prefix form (in which we can conveniently print or execute it). - Ordinarily this always returns -1. However, if LAST_STRUCT - is not -1 (i.e., we are trying to complete a field name), it will - return the index of the subexpression which is the left-hand-side - of the struct operation at LAST_STRUCT. */ - -extern int prefixify_expression (struct expression *expr, - int last_struct = -1); - -extern void write_exp_elt_opcode (struct expr_builder *, enum exp_opcode); - -extern void write_exp_elt_sym (struct expr_builder *, struct symbol *); - -extern void write_exp_elt_longcst (struct expr_builder *, LONGEST); - -extern void write_exp_elt_floatcst (struct expr_builder *, const gdb_byte *); - -extern void write_exp_elt_type (struct expr_builder *, struct type *); - -extern void write_exp_elt_intern (struct expr_builder *, struct internalvar *); - -extern void write_exp_string (struct expr_builder *, struct stoken); - -void write_exp_string_vector (struct expr_builder *, int type, - struct stoken_vector *vec); - -extern void write_exp_bitstring (struct expr_builder *, struct stoken); - -extern void write_exp_elt_block (struct expr_builder *, const struct block *); - -extern void write_exp_elt_objfile (struct expr_builder *, - struct objfile *objfile); - -extern void write_exp_msymbol (struct expr_builder *, - struct bound_minimal_symbol); - -extern void write_dollar_variable (struct parser_state *, struct stoken str); - -/* Write a reference to a symbol to the expression being built in PS. - NAME is the name of the symbol to write; SYM is the symbol. If SYM - is nullptr (meaning the 'symbol' member), a minimal symbol will be - searched for and used if available. Throws an exception if SYM is - nullptr and no minimal symbol can be found. */ - -extern void write_exp_symbol_reference (struct parser_state *ps, - const char *name, - struct block_symbol sym); - extern const char *find_template_name_end (const char *); extern std::string copy_name (struct stoken); -extern int dump_subexp (struct expression *, struct ui_file *, int); - -extern int dump_subexp_body_standard (struct expression *, - struct ui_file *, int); - -/* Dump (to STREAM) a function call like expression at position ELT in the - expression array EXP. Return a new value for ELT just after the - function call expression. */ - -extern int dump_subexp_body_funcall (struct expression *exp, - struct ui_file *stream, int elt); - -extern void operator_length (const struct expression *, int, int *, int *); - -extern void operator_length_standard (const struct expression *, int, int *, - int *); - -extern int operator_check_standard (struct expression *exp, int pos, - int (*objfile_func) - (struct objfile *objfile, void *data), - void *data); - extern bool parse_float (const char *p, int len, const struct type *type, gdb_byte *data); -/* These codes indicate operator precedences for expression printing, - least tightly binding first. */ -/* Adding 1 to a precedence value is done for binary operators, - on the operand which is more tightly bound, so that operators - of equal precedence within that operand will get parentheses. */ -/* PREC_HYPER and PREC_ABOVE_COMMA are not the precedence of any operator; - they are used as the "surrounding precedence" to force - various kinds of things to be parenthesized. */ -enum precedence - { - PREC_NULL, PREC_COMMA, PREC_ABOVE_COMMA, PREC_ASSIGN, PREC_LOGICAL_OR, - PREC_LOGICAL_AND, PREC_BITWISE_IOR, PREC_BITWISE_AND, PREC_BITWISE_XOR, - PREC_EQUAL, PREC_ORDER, PREC_SHIFT, PREC_ADD, PREC_MUL, PREC_REPEAT, - PREC_HYPER, PREC_PREFIX, PREC_SUFFIX, PREC_BUILTIN_FUNCTION - }; - -/* Table mapping opcodes into strings for printing operators - and precedences of the operators. */ - -struct op_print - { - const char *string; - enum exp_opcode opcode; - /* Precedence of operator. These values are used only by comparisons. */ - enum precedence precedence; - - /* For a binary operator: 1 iff right associate. - For a unary operator: 1 iff postfix. */ - int right_assoc; - }; - -/* Information needed to print, prefixify, and evaluate expressions for - a given language. */ - -struct exp_descriptor - { - /* Print subexpression. */ - void (*print_subexp) (struct expression *, int *, struct ui_file *, - enum precedence); - - /* Returns number of exp_elements needed to represent an operator and - the number of subexpressions it takes. */ - void (*operator_length) (const struct expression*, int, int*, int *); - - /* Call OBJFILE_FUNC for any objfile found being referenced by the - single operator of EXP at position POS. Operator parameters are - located at positive (POS + number) offsets in EXP. OBJFILE_FUNC - should never be called with NULL OBJFILE. OBJFILE_FUNC should - get passed an arbitrary caller supplied DATA pointer. If it - returns non-zero value then (any other) non-zero value should be - immediately returned to the caller. Otherwise zero should be - returned. */ - int (*operator_check) (struct expression *exp, int pos, - int (*objfile_func) (struct objfile *objfile, - void *data), - void *data); - - /* Dump the rest of this (prefix) expression after the operator - itself has been printed. See dump_subexp_body_standard in - (expprint.c). */ - int (*dump_subexp_body) (struct expression *, struct ui_file *, int); - - /* Evaluate an expression. */ - struct value *(*evaluate_exp) (struct type *, struct expression *, - int *, enum noside); - }; - - -/* Default descriptor containing standard definitions of all - elements. */ -extern const struct exp_descriptor exp_descriptor_standard; - -/* Functions used by language-specific extended operators to (recursively) - print/dump subexpressions. */ - -extern void print_subexp (struct expression *, int *, struct ui_file *, - enum precedence); - -extern void print_subexp_standard (struct expression *, int *, - struct ui_file *, enum precedence); - -/* Print a function call like expression to STREAM. This is called as a - helper function by which point the expression node identifying this as a - function call has already been stripped off and POS should point to the - number of function call arguments. EXP is the object containing the - list of expression elements. */ - -extern void print_subexp_funcall (struct expression *exp, int *pos, - struct ui_file *stream); /* Function used to avoid direct calls to fprintf in the code generated by the bison parser. */ |