diff options
author | Tom Tromey <tom@tromey.com> | 2019-03-24 10:28:42 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2019-04-04 19:55:10 -0600 |
commit | 37eedb39824dc26c82a92b5515a352d7de0c9b5b (patch) | |
tree | aaa2ca172270575273773089cbdcea2978e83ed1 /gdb/dtrace-probe.c | |
parent | 73923d7eedc7ab52144308ef7e9c12cbe4341bca (diff) | |
download | gdb-37eedb39824dc26c82a92b5515a352d7de0c9b5b.zip gdb-37eedb39824dc26c82a92b5515a352d7de0c9b5b.tar.gz gdb-37eedb39824dc26c82a92b5515a352d7de0c9b5b.tar.bz2 |
Make base class for parser_state
This makes a new base class, expr_builder, for parser_state. This
separates the state needed to construct an expression from the state
needed by the parsers.
gdb/ChangeLog
2019-04-04 Tom Tromey <tom@tromey.com>
* gdbarch.h, gdbarch.c: Rebuild.
* gdbarch.sh (dtrace_parse_probe_argument): Change type.
* stap-probe.h:
(struct stap_parse_info): Replace "parser_state" with
"expr_builder".
* parser-defs.h (struct expr_builder): Rename from "parser_state".
(parser_state): New class.
* parse.c (expr_builder): Rename.
(expr_builder::release): Rename.
(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)
(write_exp_msymbol, mark_struct_expression)
(write_dollar_variable)
(insert_type_address_space, increase_expout_size): Replace
"parser_state" with "expr_builder".
* dtrace-probe.c: Replace "parser_state" with "expr_builder".
* amd64-linux-tdep.c (amd64_dtrace_parse_probe_argument): Replace
"parser_state" with "expr_builder".
Diffstat (limited to 'gdb/dtrace-probe.c')
-rw-r--r-- | gdb/dtrace-probe.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/gdb/dtrace-probe.c b/gdb/dtrace-probe.c index f80db71..bd5cddc 100644 --- a/gdb/dtrace-probe.c +++ b/gdb/dtrace-probe.c @@ -624,26 +624,25 @@ dtrace_probe::build_arg_exprs (struct gdbarch *gdbarch) value of the argument when executed at the PC of the probe. */ for (dtrace_probe_arg &arg : m_args) { - /* Initialize the expression buffer in the parser state. The - language does not matter, since we are using our own - parser. */ - parser_state pstate (current_language, gdbarch); + /* Initialize the expression builder. The language does not + matter, since we are using our own parser. */ + expr_builder builder (current_language, gdbarch); /* The argument value, which is ABI dependent and casted to `long int'. */ - gdbarch_dtrace_parse_probe_argument (gdbarch, &pstate, argc); + gdbarch_dtrace_parse_probe_argument (gdbarch, &builder, argc); /* Casting to the expected type, but only if the type was recognized at probe load time. Otherwise the argument will be evaluated as the long integer passed to the probe. */ if (arg.type != NULL) { - write_exp_elt_opcode (&pstate, UNOP_CAST); - write_exp_elt_type (&pstate, arg.type); - write_exp_elt_opcode (&pstate, UNOP_CAST); + write_exp_elt_opcode (&builder, UNOP_CAST); + write_exp_elt_type (&builder, arg.type); + write_exp_elt_opcode (&builder, UNOP_CAST); } - arg.expr = pstate.release (); + arg.expr = builder.release (); prefixify_expression (arg.expr.get ()); ++argc; } |