aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2023-04-28 07:24:59 -0600
committerTom Tromey <tromey@adacore.com>2023-05-01 11:04:13 -0600
commit43048e46db188e546ba2107bdffcc7eb751c91df (patch)
treec7c8470c5d69cdac5657f5413ad1d1a185e38775
parentb785bb6d1869657ec26003b97548bdd4bde43c90 (diff)
downloadgdb-43048e46db188e546ba2107bdffcc7eb751c91df.zip
gdb-43048e46db188e546ba2107bdffcc7eb751c91df.tar.gz
gdb-43048e46db188e546ba2107bdffcc7eb751c91df.tar.bz2
Remove evaluate_expression
evaluate_expression is just a little wrapper for a method on expression. Removing it also removes a lot of ugly (IMO) calls to get().
-rw-r--r--gdb/ada-lang.c4
-rw-r--r--gdb/arc-tdep.c2
-rw-r--r--gdb/breakpoint.c2
-rw-r--r--gdb/cli/cli-script.c4
-rw-r--r--gdb/darwin-nat-info.c2
-rw-r--r--gdb/dtrace-probe.c2
-rw-r--r--gdb/eval.c16
-rw-r--r--gdb/expression.h3
-rw-r--r--gdb/linux-thread-db.c2
-rw-r--r--gdb/mi/mi-main.c4
-rw-r--r--gdb/objc-lang.c4
-rw-r--r--gdb/printcmd.c12
-rw-r--r--gdb/stack.c2
-rw-r--r--gdb/stap-probe.c2
-rw-r--r--gdb/tracepoint.c2
-rw-r--r--gdb/value.c2
-rw-r--r--gdb/value.h9
-rw-r--r--gdb/varobj.c12
18 files changed, 34 insertions, 52 deletions
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 3a9f554..50d5c6f 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -4339,7 +4339,7 @@ ada_read_renaming_var_value (struct symbol *renaming_sym,
sym_name = renaming_sym->linkage_name ();
expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
- return evaluate_expression (expr.get ());
+ return expr->evaluate ();
}
@@ -12318,7 +12318,7 @@ should_stop_exception (const struct bp_location *bl)
try
{
scoped_value_mark mark;
- stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
+ stop = value_true (ada_loc->excep_cond_expr->evaluate ());
}
catch (const gdb_exception_error &ex)
{
diff --git a/gdb/arc-tdep.c b/gdb/arc-tdep.c
index bbf4846..0b541c6 100644
--- a/gdb/arc-tdep.c
+++ b/gdb/arc-tdep.c
@@ -2434,7 +2434,7 @@ dump_arc_instruction_command (const char *args, int from_tty)
{
struct value *val;
if (args != NULL && strlen (args) > 0)
- val = evaluate_expression (parse_expression (args).get ());
+ val = parse_expression (args)->evaluate ();
else
val = access_value_history (0);
val->record_latest ();
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 46287da..20e016e 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -4984,7 +4984,7 @@ static bool
breakpoint_cond_eval (expression *exp)
{
scoped_value_mark mark;
- return value_true (evaluate_expression (exp));
+ return value_true (exp->evaluate ());
}
/* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c
index 294a5f1..b96dd74 100644
--- a/gdb/cli/cli-script.c
+++ b/gdb/cli/cli-script.c
@@ -567,7 +567,7 @@ execute_control_command_1 (struct command_line *cmd, int from_tty)
/* Evaluate the expression. */
{
scoped_value_mark mark;
- value *val = evaluate_expression (expr.get ());
+ value *val = expr->evaluate ();
cond_result = value_true (val);
}
@@ -622,7 +622,7 @@ execute_control_command_1 (struct command_line *cmd, int from_tty)
/* Evaluate the conditional. */
{
scoped_value_mark mark;
- value *val = evaluate_expression (expr.get ());
+ value *val = expr->evaluate ();
/* Choose which arm to take commands from based on the value
of the conditional expression. */
diff --git a/gdb/darwin-nat-info.c b/gdb/darwin-nat-info.c
index 9e56207..d5f633b 100644
--- a/gdb/darwin-nat-info.c
+++ b/gdb/darwin-nat-info.c
@@ -723,7 +723,7 @@ info_mach_region_command (const char *exp, int from_tty)
struct inferior *inf;
expression_up expr = parse_expression (exp);
- val = evaluate_expression (expr.get ());
+ val = expr->evaluate ();
if (TYPE_IS_REFERENCE (val->type ()))
{
val = value_ind (val);
diff --git a/gdb/dtrace-probe.c b/gdb/dtrace-probe.c
index 70fa1a9..dad15df 100644
--- a/gdb/dtrace-probe.c
+++ b/gdb/dtrace-probe.c
@@ -714,7 +714,7 @@ dtrace_probe::evaluate_argument (unsigned n,
struct dtrace_probe_arg *arg;
arg = this->get_arg_by_number (n, gdbarch);
- return evaluate_expression (arg->expr.get (), arg->type);
+ return arg->expr->evaluate (arg->type);
}
/* Implementation of the compile_to_ax method. */
diff --git a/gdb/eval.c b/gdb/eval.c
index 8db9c4d..82b5fe2 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
@@ -53,7 +53,7 @@ parse_and_eval_address (const char *exp)
{
expression_up expr = parse_expression (exp);
- return value_as_address (evaluate_expression (expr.get ()));
+ return value_as_address (expr->evaluate ());
}
/* Like parse_and_eval_address, but treats the value of the expression
@@ -63,7 +63,7 @@ parse_and_eval_long (const char *exp)
{
expression_up expr = parse_expression (exp);
- return value_as_long (evaluate_expression (expr.get ()));
+ return value_as_long (expr->evaluate ());
}
struct value *
@@ -71,7 +71,7 @@ parse_and_eval (const char *exp)
{
expression_up expr = parse_expression (exp);
- return evaluate_expression (expr.get ());
+ return expr->evaluate ();
}
/* Parse up to a comma (or to a closeparen)
@@ -83,7 +83,7 @@ parse_to_comma_and_eval (const char **expp)
{
expression_up expr = parse_exp_1 (expp, 0, nullptr, 1);
- return evaluate_expression (expr.get ());
+ return expr->evaluate ();
}
@@ -116,14 +116,6 @@ expression::evaluate (struct type *expect_type, enum noside noside)
return retval;
}
-/* See value.h. */
-
-struct value *
-evaluate_expression (struct expression *exp, struct type *expect_type)
-{
- return exp->evaluate (expect_type, EVAL_NORMAL);
-}
-
/* Evaluate an expression, avoiding all memory references
and getting a value whose type alone is correct. */
diff --git a/gdb/expression.h b/gdb/expression.h
index 77949dd..5bfb051 100644
--- a/gdb/expression.h
+++ b/gdb/expression.h
@@ -222,7 +222,8 @@ struct expression
/* Evaluate the expression. EXPECT_TYPE is the context type of the
expression; normally this should be nullptr. NOSIDE controls how
evaluation is performed. */
- struct value *evaluate (struct type *expect_type, enum noside noside);
+ struct value *evaluate (struct type *expect_type = nullptr,
+ enum noside noside = EVAL_NORMAL);
/* Language it was entered in. */
const struct language_defn *language_defn;
diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c
index 0e190f9..71a81aa 100644
--- a/gdb/linux-thread-db.c
+++ b/gdb/linux-thread-db.c
@@ -694,7 +694,7 @@ check_thread_db_callback (const td_thrhandle_t *th, void *arg)
switch_to_thread (thread_info);
expression_up expr = parse_expression ("(int) errno");
- struct value *val = evaluate_expression (expr.get ());
+ struct value *val = expr->evaluate ();
if (tdb_testinfo->log_progress)
{
diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
index 0013e5d..683d36d 100644
--- a/gdb/mi/mi-main.c
+++ b/gdb/mi/mi-main.c
@@ -1189,7 +1189,7 @@ mi_cmd_data_evaluate_expression (const char *command, char **argv, int argc)
expression_up expr = parse_expression (argv[0]);
- val = evaluate_expression (expr.get ());
+ val = expr->evaluate ();
string_file stb;
@@ -2468,7 +2468,7 @@ print_variable_or_computed (const char *expression, enum print_values values)
if (values == PRINT_SIMPLE_VALUES)
val = evaluate_type (expr.get ());
else
- val = evaluate_expression (expr.get ());
+ val = expr->evaluate ();
gdb::optional<ui_out_emit_tuple> tuple_emitter;
if (values != PRINT_NO_VALUES)
diff --git a/gdb/objc-lang.c b/gdb/objc-lang.c
index 4a9dee4..ccbe7c1 100644
--- a/gdb/objc-lang.c
+++ b/gdb/objc-lang.c
@@ -1164,9 +1164,7 @@ print_object_command (const char *args, int from_tty)
{
expression_up expr = parse_expression (args);
- object
- = evaluate_expression (expr.get (),
- builtin_type (expr->gdbarch)->builtin_data_ptr);
+ object = expr->evaluate (builtin_type (expr->gdbarch)->builtin_data_ptr);
}
/* Validate the address for sanity. */
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index f6d5bad..e903bf4 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -1316,7 +1316,7 @@ process_print_command_args (const char *args, value_print_options *print_opts,
/* VOIDPRINT is true to indicate that we do want to print a void
value, so invert it for parse_expression. */
expression_up expr = parse_expression (exp, nullptr, !voidprint);
- return evaluate_expression (expr.get ());
+ return expr->evaluate ();
}
return access_value_history (0);
@@ -1495,7 +1495,7 @@ output_command (const char *exp, int from_tty)
expression_up expr = parse_expression (exp);
- val = evaluate_expression (expr.get ());
+ val = expr->evaluate ();
annotate_value_begin (val->type ());
@@ -1534,7 +1534,7 @@ set_command (const char *exp, int from_tty)
(_("Expression is not an assignment (and might have no effect)"));
}
- evaluate_expression (expr.get ());
+ expr->evaluate ();
}
static void
@@ -1900,7 +1900,7 @@ x_command (const char *exp, int from_tty)
command's definition. */
if (from_tty)
set_repeat_arguments ("");
- val = evaluate_expression (expr.get ());
+ val = expr->evaluate ();
if (TYPE_IS_REFERENCE (val->type ()))
val = coerce_ref (val);
/* In rvalue contexts, such as this, functions are coerced into
@@ -2188,7 +2188,7 @@ do_one_display (struct display *d)
struct value *val;
CORE_ADDR addr;
- val = evaluate_expression (d->exp.get ());
+ val = d->exp->evaluate ();
addr = value_as_address (val);
if (d->format.format == 'i')
addr = gdbarch_addr_bits_remove (d->exp->gdbarch, addr);
@@ -2226,7 +2226,7 @@ do_one_display (struct display *d)
{
struct value *val;
- val = evaluate_expression (d->exp.get ());
+ val = d->exp->evaluate ();
print_formatted (val, d->format.size, &opts, gdb_stdout);
}
catch (const gdb_exception_error &ex)
diff --git a/gdb/stack.c b/gdb/stack.c
index 03e903d..b1b25aa 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -2722,7 +2722,7 @@ return_command (const char *retval_exp, int from_tty)
/* Compute the return value. Should the computation fail, this
call throws an error. */
- return_value = evaluate_expression (retval_expr.get ());
+ return_value = retval_expr->evaluate ();
/* Cast return value to the return type of the function. Should
the cast fail, this call throws an error. */
diff --git a/gdb/stap-probe.c b/gdb/stap-probe.c
index c7ad35d..756e90d 100644
--- a/gdb/stap-probe.c
+++ b/gdb/stap-probe.c
@@ -1444,7 +1444,7 @@ stap_probe::evaluate_argument (unsigned n, frame_info_ptr frame)
struct gdbarch *gdbarch = get_frame_arch (frame);
arg = this->get_arg_by_number (n, gdbarch);
- return evaluate_expression (arg->aexpr.get (), arg->atype);
+ return arg->aexpr->evaluate (arg->atype);
}
/* Compile the probe's argument N (indexed from 0) to agent expression.
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index c8bac7a..ffda4a6 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -1375,7 +1375,7 @@ encode_actions_1 (struct command_line *action,
case UNOP_MEMVAL:
{
/* Safe because we know it's a simple expression. */
- tempval = evaluate_expression (exp.get ());
+ tempval = exp->evaluate ();
addr = tempval->address ();
expr::unop_memval_operation *memop
= (gdb::checked_static_cast<expr::unop_memval_operation *>
diff --git a/gdb/value.c b/gdb/value.c
index eab1933..01c30eb 100644
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -1896,7 +1896,7 @@ init_if_undefined_command (const char* args, int from_tty)
/* Only evaluate the expression if the lvalue is void.
This may still fail if the expression is invalid. */
if (intvar->kind == INTERNALVAR_VOID)
- evaluate_expression (expr.get ());
+ expr->evaluate ();
}
diff --git a/gdb/value.h b/gdb/value.h
index e13f92c..f6092ab 100644
--- a/gdb/value.h
+++ b/gdb/value.h
@@ -1299,15 +1299,6 @@ extern int using_struct_return (struct gdbarch *gdbarch,
struct value *function,
struct type *value_type);
-/* Evaluate the expression EXP. If set, EXPECT_TYPE is passed to the
- outermost operation's evaluation. This is ignored by most
- operations, but may be used, e.g., to determine the type of an
- otherwise untyped symbol. The caller should not assume that the
- returned value has this type. */
-
-extern struct value *evaluate_expression (struct expression *exp,
- struct type *expect_type = nullptr);
-
extern struct value *evaluate_type (struct expression *exp);
extern value *evaluate_var_value (enum noside noside, const block *blk,
diff --git a/gdb/varobj.c b/gdb/varobj.c
index 5a5e55c..75b4d44 100644
--- a/gdb/varobj.c
+++ b/gdb/varobj.c
@@ -364,12 +364,12 @@ varobj_create (const char *objname,
select_frame (fi);
}
- /* We definitely need to catch errors here.
- If evaluate_expression succeeds we got the value we wanted.
- But if it fails, we still go on with a call to evaluate_type(). */
+ /* We definitely need to catch errors here. If evaluation of
+ the expression succeeds, we got the value we wanted. But if
+ it fails, we still go on with a call to evaluate_type(). */
try
{
- value = evaluate_expression (var->root->exp.get ());
+ value = var->root->exp->evaluate ();
}
catch (const gdb_exception_error &except)
{
@@ -979,7 +979,7 @@ varobj_set_value (struct varobj *var, const char *expression)
expression_up exp = parse_exp_1 (&s, 0, 0, 0);
try
{
- value = evaluate_expression (exp.get ());
+ value = exp->evaluate ();
}
catch (const gdb_exception_error &except)
@@ -1995,7 +1995,7 @@ value_of_root_1 (struct varobj **var_handle)
expression fails we want to just return NULL. */
try
{
- new_val = evaluate_expression (var->root->exp.get ());
+ new_val = var->root->exp->evaluate ();
}
catch (const gdb_exception_error &except)
{