binutils-gdb.git
3 years agoIntroduce binop_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce binop_operation

This adds two new template classes, binop_operation and
usual_ax_binop_operation, and then uses these to implement a number of
binary operations that follow similar patterns.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class binop_operation, class usual_ax_binop_operation):
New.
(exp_operation, intdiv_operation, mod_operation, mul_operation)
(div_operation, rem_operation, lsh_operation, rsh_operation)
(bitwise_and_operation, bitwise_ior_operation)
(bitwise_xor_operation): New typedefs.
* eval.c (eval_op_binary): No longer static.

3 years agoIntroduce sub_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce sub_operation

This adds class sub_operation, which implements BINOP_SUB.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class sub_operation): New.
* eval.c (eval_op_sub): No longer static.  Remove "op" parameter.
(evaluate_subexp_standard): Update.

3 years agoIntroduce add_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce add_operation

This adds class add_operation, which implements BINOP_ADD.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class add_operation): New.
* eval.c (eval_op_add): No longer static.  Remove "op" parameter.
(evaluate_subexp_standard): Update.

3 years agoIntroduce concat_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce concat_operation

This adds class concat_operation, which implements BINOP_CONCAT.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class concat_operation): New.
* eval.c (eval_op_concat): No longer static.  Remove "op"
parameter.
(evaluate_subexp_standard): Update.

3 years agoIntroduce structop_member_operation and structop_mptr_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce structop_member_operation and structop_mptr_operation

This adds class structop_member_operation and structop_mptr_operation,
which implement STRUCTOP_MEMBER and STRUCTOP_MPTR.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class structop_member_operation)
(class structop_mptr_operation): New.
* eval.c (eval_op_member): No longer static.

3 years agoIntroduce structop_ptr_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce structop_ptr_operation

This adds class structop_ptr_operation, which implements STRUCTOP_PTR.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class structop_ptr_operation): New.
* eval.c (eval_op_structop_ptr): No longer static.  Remove "op"
parameter.

3 years agoIntroduce structop_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce structop_operation

This adds class structop_base_operation and structop_operation, which
implement STRUCTOP_STRUCT.  The base class exists to unify the
completion code between STRUCTOP_STRUCT and STRUCTOP_PTR.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class structop_base_operation)
(class structop_operation): New.
* eval.c (eval_op_structop_struct): No longer static.

3 years agoIntroduce complex_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce complex_operation

This adds class complex_operation, which implements OP_COMPLEX.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class complex_operation): New.

3 years agoIntroduce objc_selector_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce objc_selector_operation

This adds class objc_selector_operation, which implements
OP_OBJC_SELECTOR.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_objc_selector): No longer static.
* c-exp.h (class objc_selector_operation): New.

3 years agoIntroduce objc_nsstring_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce objc_nsstring_operation

This adds class objc_nsstring_operation, which implements
OP_OBJC_NSSTRING.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c: Include c-exp.h.
* c-exp.h (class objc_nsstring_operation): New.

3 years agoAdd c-exp.h and c_string_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Add c-exp.h and c_string_operation

This adds the new file c-exp.h, where C operation classes will be
declared.  The first such class, c_string_operation, is also added
here.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* c-lang.c (c_string_operation::evaluate): New method.
* c-exp.h: New file.

3 years agoIntroduce ternop_cond_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce ternop_cond_operation

This adds class ternop_cond_operation, which implements TERNOP_COND.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class ternop_cond_operation): New.
* ax-gdb.c (ternop_cond_operation::do_generate_ax): New method.

3 years agoIntroduce ternop_slice_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce ternop_slice_operation

This adds class ternop_slice_operation, which implements TERNOP_SLICE.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class ternop_slice_operation): New.
* eval.c (eval_op_ternop): No longer static.

3 years agoIntroduce string_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce string_operation

This adds string_operation, which implements OP_STRING for most
languages (C has its own variant).

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class string_operation): New.
* eval.c (eval_op_string): No longer static.

3 years agoIntroduce internalvar_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce internalvar_operation

This adds class internalvar_operation, which implements
OP_INTERNALVAR.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class internalvar_operation): New.
* ax-gdb.c (internalvar_operation::do_generate_ax): New method.

3 years agoIntroduce bool_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce bool_operation

This adds class bool_operation, which implements OP_BOOL.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class bool_operation): New.

3 years agoIntroduce register_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce register_operation

This adds class register_operation, which implements OP_REGISTER.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class register_operation): New.
* eval.c (eval_op_register): No longer static.
* ax-gdb.c (register_operation::do_generate_ax): New method.

3 years agoIntroduce last_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce last_operation

This adds class last_operation, which implements OP_LAST.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class last_operation): New.

3 years agoIntroduce func_static_var_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce func_static_var_operation

This adds class func_static_var_operation, which implements
OP_FUNC_STATIC_VAR.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class func_static_var_operation): New.
* eval.c (eval_op_func_static_var): No longer static.

3 years agoIntroduce var_entry_value_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce var_entry_value_operation

This adds class var_entry_value_operation, which implements
OP_VAR_ENTRY_VALUE.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class var_entry_value_operation): New.
* eval.c (eval_op_var_entry_value): No longer static.

3 years agoIntroduce var_msym_value_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce var_msym_value_operation

This adds class var_msym_value_operation, which implements
OP_VAR_MSYM_VALUE.  A new method is added to class operation in order
to support a special case in minsym evaluation.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expression.h (class operation) <set_outermost>: New method.
* expop.h (class var_msym_value_operation): New.
* eval.c (eval_op_var_msym_value): No longer static.
(var_msym_value_operation::evaluate_for_address)
(var_msym_value_operation::evaluate_for_sizeof)
(var_msym_value_operation::evaluate_for_cast): New methods.
* ax-gdb.c (var_msym_value_operation::do_generate_ax): New
method.

3 years agoIntroduce long_const_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce long_const_operation

This adds class long_const_operation, which holds a scalar constant.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class long_const_operation): New.
* ax-gdb.c (long_const_operation::do_generate_ax): New method.

3 years agoIntroduce scope_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce scope_operation

This adds class scope_operation, an implementation of OP_SCOPE.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (class scope_operation): New.
* eval.c (eval_op_scope): No longer static.
(scope_operation::evaluate_for_address): New method.
* ax-gdb.c (scope_operation::do_generate_ax): New method.

3 years agoIntroduce float_const_operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce float_const_operation

This adds class float_const_operation, an operation holding a
floating-point constant.  Unlike most other new operations, this one
requires a custom 'dump' method.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expprint.c (float_const_operation::dump): New method.
* expop.h (float_data): New typedef.
(class float_const_operation): New.

3 years agoAdd two agent expression helper functions
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Add two agent expression helper functions

This adds a couple of agent expression helper functions that will be
useful when implementing various operations.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expop.h (gen_expr_binop, gen_expr_structop): Declare.
* ax-gdb.c (gen_expr_binop): New function.
(gen_expr_structop): Likewise.

3 years agoImplement dumping
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Implement dumping

This patch implements the dumping methods for tuple_holding_operation.
A number of overloads are used.  Note that no default case is given.
This approach makes it simple to detect when a new overload is needed
-- compilation will fail.  (There is an example of this in a later
patch in the series.)

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expprint.c (expr::dump_for_expression): New functions.
* expop.h (dump_for_expression): New overloads.
(tuple_holding_operation::dump, tuple_holding_operation::do_dump):
Update.

3 years agoIntroduce class operation
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Introduce class operation

This patch introduces class operation, the new base class for all
expression operations.

In the new approach, an operation is simply a class that presents a
certain interface.  Operations own their operands, and management is
done via unique_ptr.

The operation interface is largely ad hoc, based on the evolution of
expression handling in GDB.  Parts (for example,
evaluate_with_coercion) are probably redundant; however I took this
approach to try to avoid mixing different kinds of refactorings.

In some specific situations, rather than add a generic method across
the entire operation class hierarchy, I chose instead to use
dynamic_cast and specialized methods on certain concrete subclasses.
This will appear in some subsequent patches.

One goal of this work is to avoid the kinds of easy-to-make errors
that affected the old implementation.  To this end, some helper
subclasses are also added here.  These helpers automate the
implementation of the 'dump', 'uses_objfile', and 'constant_p'
methods.  Nearly every concrete operation that is subsequently added
will use these facilities.  (Note that the 'dump' implementation is
only outlined here, the body appears in the next patch.)

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* expression.h (expr::operation): New class.
(expr::make_operation): New function.
(expr::operation_up): New typedef.
* expop.h: New file.
* eval.c (operation::evaluate_for_cast)
(operation::evaluate_for_address, operation::evaluate_for_sizeof):
New methods.
* ax-gdb.c (operation::generate_ax): New method.

3 years agoSplit gen_expr_binop_rest
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split gen_expr_binop_rest

This splits gen_expr_binop_rest into two overloads.  One overload
retains the "pc" parameter, while the other does not, and furthermore
does not call gen_expr on the left-hand-side.  This split is useful
for subsequent patches in the new expression evaluation approach.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* ax-gdb.c (gen_expr_binop_rest): Remove "pc" parameter.
(gen_expr_binop_rest): New overload.

3 years agoSplit out eval_multi_subscript
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_multi_subscript

This splits MULTI_SUBSCRIPT into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_multi_subscript): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out ada_binop_exp
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out ada_binop_exp

This splits BINOP_EXP into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* ada-lang.c (ada_binop_exp): New function.
(ada_evaluate_subexp): Use it.

3 years agoChange value_val_atr to ada_val_atr
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Change value_val_atr to ada_val_atr

This renames value_val_atr to ada_val_atr, changing its parameters to
more closely mirror other expression helpers.  The
EVAL_AVOID_SIDE_EFFECTS case is moved into this function as well.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* ada-lang.c (ada_val_atr): Rename from value_val_atr.  Change
parameters.
(ada_evaluate_subexp): Use it.

3 years agoSplit out ada_binop_minmax
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out ada_binop_minmax

This splits OP_ATR_MIN and OP_ATR_MAX into a new function for future
use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* ada-lang.c (ada_binop_minmax): New function.
(ada_evaluate_subexp): Use it.

3 years agoSplit out ada_unop_atr
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out ada_unop_atr

This splits some Ada attribute operations into a new function for
future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* ada-lang.c (ada_unop_atr): New function.
(ada_evaluate_subexp): Use it.

3 years agoSplit out ada_binop_in_bounds
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out ada_binop_in_bounds

This splits BINOP_IN_BOUNDS into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* ada-lang.c (ada_binop_in_bounds): New function.
(ada_evaluate_subexp): Use it.

3 years agoSplit out ada_ternop_slice
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out ada_ternop_slice

This splits TERNOP_SLICE into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* ada-lang.c (ada_ternop_slice): New function.
(ada_evaluate_subexp): Use it.

3 years agoSplit out ada_equal_binop
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out ada_equal_binop

This splits BINOP_EQUAL and BINOP_NOTEQUAL into a new function for
future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* ada-lang.c (ada_equal_binop): New function.
(ada_evaluate_subexp): Use it.

3 years agoSplit out ada_mult_binop
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out ada_mult_binop

This splits BINOP_MUL into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* ada-lang.c (ada_mult_binop): New function.
(ada_evaluate_subexp): Use it.

3 years agoSplit out ada_abs
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out ada_abs

This splits UNOP_ABS into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* ada-lang.c (ada_abs): New function.
(ada_evaluate_subexp): Use it.

3 years agoSplit out ada_atr_size
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out ada_atr_size

This splits OP_ATR_SIZE into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* ada-lang.c (ada_atr_size): New function.
(ada_evaluate_subexp): Use it.

3 years agoSplit out ada_atr_tag
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out ada_atr_tag

This splits OP_ATR_TAG into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* ada-lang.c (ada_atr_tag): New function.
(ada_evaluate_subexp): Use it.

3 years agoSplit out ada_unop_in_range
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out ada_unop_in_range

This splits UNOP_IN_RANGE into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* ada-lang.c (ada_unop_in_range): New function.
(ada_evaluate_subexp): Use it.

3 years agoSplit out ada_unop_neg
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out ada_unop_neg

This splits UNOP_NEG into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* ada-lang.c (ada_unop_neg): New function.
(ada_evaluate_subexp): Use it.

3 years agoSplit out eval_ternop_in_range
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_ternop_in_range

This splits TERNOP_IN_RANGE into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* ada-lang.c (eval_ternop_in_range): New function.
(ada_evaluate_subexp): Use it.

3 years agoSplit out eval_opencl_assign
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_opencl_assign

This splits BINOP_ASSIGN into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* opencl-lang.c (eval_opencl_assign): New function.
(evaluate_subexp_opencl): Use it.

3 years agoSplit out eval_op_objc_msgcall
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_objc_msgcall

This splits OP_OBJC_MSGCALL into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_objc_msgcall): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_binop_assign_modify
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_binop_assign_modify

This splits BINOP_ASSIGN_MODIFY into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_binop_assign_modify): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_m2_subscript
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_m2_subscript

This splits BINOP_SUBSCRIPT into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* m2-lang.c (eval_op_m2_subscript): New function.
(evaluate_subexp_modula2): Use it.

3 years agoSplit out eval_op_m2_high
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_m2_high

This splits UNOP_HIGH into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* m2-lang.c (eval_op_m2_high): New function.
(evaluate_subexp_modula2): Use it.

3 years agoSplit helper functions
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split helper functions

This splits a couple of address-of and sizeof functions, so that the
body can be reused by the (coming) new expression code.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (evaluate_subexp_for_address_base): New function.
(evaluate_subexp_for_address): Use it.
(evaluate_subexp_for_sizeof_base): New function.
(evaluate_subexp_for_sizeof): Use it.

3 years agoSplit out eval_op_rust_structop
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_rust_structop

This splits STRUCTOP_STRUCT into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* rust-lang.c (eval_op_rust_structop): New function.
(rust_evaluate_subexp): Use it.

3 years agoSplit out eval_op_rust_struct_anon
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_rust_struct_anon

This splits STRUCTOP_ANONYMOUS into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* rust-lang.c (eval_op_rust_struct_anon): New function.
(rust_evaluate_subexp): Use it.

3 years agoSplit out eval_op_rust_array
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_rust_array

This splits OP_ARRAY into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* rust-lang.c (eval_op_rust_array): New function.
(rust_evaluate_subexp): Use it.

3 years agoSplit out eval_op_rust_complement
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_rust_complement

This splits UNOP_COMPLEMENT into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* rust-lang.c (eval_op_rust_complement): New function.
(rust_evaluate_subexp): Use it.

3 years agoSplit out eval_op_rust_ind
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_rust_ind

This splits UNOP_IND into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* rust-lang.c (eval_op_rust_ind): New function.
(rust_evaluate_subexp): Use it.

3 years agoChange parameters to rust_subscript
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Change parameters to rust_subscript

This changes the parameters to rust_subscript, making it more suitable
for reuse by the (coming) new expression code.  In particular,
rust_subscript no longer evaluates its subexpressions.  Instead, they
are passed in.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* rust-lang.c (rust_subscript): Change parameters.
(rust_evaluate_subexp): Update.

3 years agoChange parameters to rust_range
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Change parameters to rust_range

This changes the parameters to rust_range, making it more suitable for
reuse by the (coming) new expression code.  In particular, rust_range
no longer evaluates its subexpressions.  Instead, they are passed in.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* rust-lang.c (rust_range): Change parameters.
(rust_evaluate_subexp): Update.

3 years agoSplit out eval_op_f_allocated
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_f_allocated

This splits out a helper function, eval_op_f_allocated, that will be
used in a later patch.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* f-lang.c (eval_op_f_allocated): New function.
(evaluate_subexp_f): Use it.

3 years agoSplit out fortran_require_array
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out fortran_require_array

This splits out a helper function, fortran_require_array, that will be
used in a later patch.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* f-lang.c (fortran_require_array): New function.
(evaluate_subexp_f): Use it.

3 years agoSplit out eval_op_f_kind
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_f_kind

This splits UNOP_FORTRAN_KIND into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* f-lang.c (eval_op_f_kind): New function.
(evaluate_subexp_f): Use it.

3 years agoSplit out eval_op_f_cmplx
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_f_cmplx

This splits BINOP_FORTRAN_CMPLX into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* f-lang.c (eval_op_f_cmplx): New function.
(evaluate_subexp_f): Use it.

3 years agoSplit out eval_op_f_modulo
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_f_modulo

This splits BINOP_FORTRAN_MODULO into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* f-lang.c (eval_op_f_modulo): New function.
(evaluate_subexp_f): Use it.

3 years agoSplit out eval_op_f_floor
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_f_floor

This splits UNOP_FORTRAN_FLOOR into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* f-lang.c (eval_op_f_floor): New function.
(evaluate_subexp_f): Use it.

3 years agoSplit out eval_op_f_ceil
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_f_ceil

This splits UNOP_FORTRAN_CEILING into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* f-lang.c (eval_op_f_ceil): New function.
(evaluate_subexp_f): Use it.

3 years agoSplit out eval_op_f_mod
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_f_mod

This splits BINOP_MOD into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* f-lang.c (eval_op_f_mod): New function.
(evaluate_subexp_f): Use it.

3 years agoSplit out eval_op_f_abs
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_f_abs

This splits UNOP_ABS into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* f-lang.c (eval_op_f_abs): New function.
(evaluate_subexp_f): Use it.

3 years agoSplit out eval_op_type
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_type

This splits OP_TYPE into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_type): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_postdec
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_postdec

This splits UNOP_POSTDECREMENT into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_postdec): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_postinc
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_postinc

This splits UNOP_POSTINCREMENT into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_postinc): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_predec
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_predec

This splits UNOP_PREDECREMENT into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_predec): New file.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_preinc
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_preinc

This splits UNOP_PREINCREMENT into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_preinc): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_memval
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_memval

This splits UNOP_MEMVAL into a new function for future use.  This new
function is also used to hande UNOP_MEMVAL_TYPE.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_memval): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_alignof
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_alignof

This splits UNOP_ALIGNOF into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_alignof): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_ind
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_ind

This splits UNOP_IND into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_ind): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_lognot
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_lognot

This splits UNOP_LOGICAL_NOT into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_lognot): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_complement
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_complement

This splits UNOP_COMPLEMENT into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_complement): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_neg
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_neg

This splits UNOP NEG into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_neg): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_plus
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_plus

This splits UNOP_PLUS into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_plus): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_repeat
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_repeat

This splits BINOP_REPEAT into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_repeat): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_leq
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_leq

This splits BINOP_LEQ into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_leq): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_geq
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_geq

This splits BINOP_GEQ into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_geq): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_gtr
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_gtr

This splits BINOP_GTR into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_gtr): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_less
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_less

This splits BINOP_LESS into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_less): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_notequal
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_notequal

This splits BINOP_NOTEQUAL into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_notequal): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_equal
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_equal

This splits BINOP_EQUAL into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_equal): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_subscript
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_subscript

This splits BINOP_SUBSCRIPT into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_subscript): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_binary
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_binary

This splits out a new eval_op_binary helper function.  This function
can handle several different binary operations:

    case BINOP_EXP:
    case BINOP_MUL:
    case BINOP_DIV:
    case BINOP_INTDIV:
    case BINOP_REM:
    case BINOP_MOD:
    case BINOP_LSH:
    case BINOP_RSH:
    case BINOP_BITWISE_AND:
    case BINOP_BITWISE_IOR:
    case BINOP_BITWISE_XOR:

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_binary): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_sub
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_sub

This splits BINOP_SUB into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_sub): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_add
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_add

This splits BINOP_ADD into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_add): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_member
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_member

This splits STRUCTOP_MEMBER into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_member): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_structop_ptr
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_structop_ptr

This splits STRUCTOP_PTR into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_structop_ptr): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_structop_struct
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_structop_struct

This splits STRUCTOP_STRUCT into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_structop_struct): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_ternop
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_ternop

This splits TERNOP_SLICE into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_ternop): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_concat
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_concat

This splits BINOP_CONCAT into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_concat): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_objc_selector
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_objc_selector

This splits OP_OBJC_SELECTOR into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_objc_selector): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_string
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_string

This splits OP_STRING into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_string): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_register
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_register

This splits OP_REGISTER into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_register): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_func_static_var
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_func_static_var

This splits OP_FUNC_STATIC_VAR into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_func_static_var): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_var_msym_value
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_var_msym_value

This splits OP_VAR_MSYM_VALUE into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_var_msym_value): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_var_entry_value
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_var_entry_value

This splits OP_VAR_ENTRY_VALUE into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_var_entry_value): New function.
(evaluate_subexp_standard): Use it.

3 years agoSplit out eval_op_scope
Tom Tromey [Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)]
Split out eval_op_scope

This splits OP_SCOPE into a new function for future use.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

* eval.c (eval_op_scope): New function.
(evaluate_subexp_standard): Use it.