GDB (xrefs)
|
#include "expression.h"
Public Member Functions | |
virtual | ~operation ()=default |
virtual value * | evaluate (struct type *expect_type, struct expression *exp, enum noside noside)=0 |
virtual value * | evaluate_with_coercion (struct expression *exp, enum noside noside) |
virtual value * | evaluate_for_cast (struct type *expect_type, struct expression *exp, enum noside noside) |
virtual value * | evaluate_for_sizeof (struct expression *exp, enum noside noside) |
virtual value * | evaluate_for_address (struct expression *exp, enum noside noside) |
virtual value * | evaluate_funcall (struct type *expect_type, struct expression *exp, enum noside noside, const std::vector< operation_up > &args) |
virtual bool | constant_p () const |
virtual bool | uses_objfile (struct objfile *objfile) const |
void | generate_ax (struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type=nullptr) |
virtual enum exp_opcode | opcode () const =0 |
virtual void | dump (struct ui_file *stream, int depth) const =0 |
virtual void | set_outermost () |
Protected Member Functions | |
operation ()=default | |
DISABLE_COPY_AND_ASSIGN (operation) | |
value * | evaluate_funcall (struct type *expect_type, struct expression *exp, enum noside noside, const char *function_name, const std::vector< operation_up > &args) |
virtual void | do_generate_ax (struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) |
Definition at line 87 of file expression.h.
|
protecteddefault |
|
virtualdefault |
|
inlinevirtual |
Reimplemented in expr::maybe_constant_operation< Arg >, expr::maybe_constant_operation< block_symbol >, expr::maybe_constant_operation< bound_minimal_symbol >, expr::maybe_constant_operation< operation_up >, expr::maybe_constant_operation< operation_up, enum exp_opcode, int >, expr::maybe_constant_operation< operation_up, operation_up >, expr::maybe_constant_operation< operation_up, operation_up, int >, expr::maybe_constant_operation< operation_up, operation_up, operation_up >, expr::maybe_constant_operation< operation_up, operation_up, struct type * >, expr::maybe_constant_operation< operation_up, std::string >, expr::maybe_constant_operation< operation_up, struct type * >, expr::maybe_constant_operation< struct type *, std::string >, expr::float_const_operation, expr::long_const_operation, expr::bool_operation, and expr::type_operation.
Definition at line 141 of file expression.h.
Referenced by generate_ax().
|
protected |
|
inlineprotectedvirtual |
Reimplemented in expr::ada_var_msym_value_operation, expr::ada_wrapped_operation, expr::ada_binop_equal_operation, expr::ada_var_value_operation, expr::scope_operation, expr::var_value_operation, expr::long_const_operation, expr::var_msym_value_operation, expr::register_operation, expr::internalvar_operation, expr::ternop_cond_operation, expr::structop_operation, expr::structop_ptr_operation, expr::add_operation, expr::sub_operation, expr::usual_ax_binop_operation< OP, FUNC >, expr::usual_ax_binop_operation< BINOP_SUBSCRIPT, eval_op_subscript >, expr::repeat_operation, expr::comma_operation, expr::usual_ax_unop_operation< OP, FUNC >, expr::unop_ind_operation, expr::unop_addr_operation, expr::unop_sizeof_operation, expr::unop_memval_operation, expr::unop_memval_type_operation, expr::op_this_operation, expr::assign_operation, expr::assign_modify_operation, expr::unop_extract_operation, expr::unop_cast_operation, expr::unop_cast_type_operation, expr::logical_and_operation, and expr::logical_or_operation.
Definition at line 176 of file expression.h.
Referenced by generate_ax().
|
pure virtual |
Implemented in expr::ada_structop_operation, expr::ada_target_operation, expr::tuple_holding_operation< Arg >, expr::tuple_holding_operation< ada_component_up >, expr::tuple_holding_operation< Arg... >, expr::tuple_holding_operation< bool >, expr::tuple_holding_operation< CORE_ADDR, operation_up, std::vector< operation_up > >, expr::tuple_holding_operation< enum c_string_type_values, std::vector< std::string > >, expr::tuple_holding_operation< enum exp_opcode, operation_up, operation_up >, expr::tuple_holding_operation< enum range_flag, operation_up, operation_up >, expr::tuple_holding_operation< enum range_flag, operation_up, operation_up, operation_up >, expr::tuple_holding_operation< exp_opcode, operation_up >, expr::tuple_holding_operation< exp_opcode, operation_up, operation_up >, expr::tuple_holding_operation< exp_opcode, operation_up, operation_up, type * >, expr::tuple_holding_operation< int >, expr::tuple_holding_operation< int, int, std::vector< operation_up > >, expr::tuple_holding_operation< int, operation_up >, expr::tuple_holding_operation< internalvar * >, expr::tuple_holding_operation< operation_up >, expr::tuple_holding_operation< operation_up, operation_up >, expr::tuple_holding_operation< operation_up, operation_up, operation_up >, expr::tuple_holding_operation< operation_up, operation_up, type * >, expr::tuple_holding_operation< operation_up, std::string >, expr::tuple_holding_operation< operation_up, std::vector< operation_up > >, expr::tuple_holding_operation< operation_up, struct type * >, expr::tuple_holding_operation< operation_up, type * >, expr::tuple_holding_operation< std::string >, expr::tuple_holding_operation< std::string, const block *, std::vector< operation_up > >, expr::tuple_holding_operation< struct type * >, expr::tuple_holding_operation< struct type *, gdb_mpz >, expr::tuple_holding_operation< struct type *, operation_up >, expr::tuple_holding_operation< struct type *, operation_up, std::vector< std::pair< std::string, operation_up > > >, expr::tuple_holding_operation< symbol * >, expr::tuple_holding_operation< type_instance_flags, std::vector< type * >, operation_up >, expr::tuple_holding_operation<>, and expr::float_const_operation.
Referenced by expr::ada_structop_operation::dump().
|
pure virtual |
Implemented in expr::ada_wrapped_operation, expr::ada_string_operation, expr::ada_qual_operation, expr::ada_ternop_range_operation, expr::ada_unop_range_operation, expr::ada_binop_addsub_operation, expr::ada_binop_equal_operation, expr::ada_bitwise_operation< OP >, expr::ada_ternop_slice_operation, expr::ada_binop_in_bounds_operation, expr::ada_unop_atr_operation, expr::ada_var_value_operation, expr::ada_atr_operation< FUNC >, expr::ada_unop_ind_operation, expr::ada_structop_operation, expr::ada_funcall_operation, expr::ada_assign_operation, expr::ada_target_operation, expr::ada_char_operation, expr::ada_concat_operation, expr::c_string_operation, expr::objc_nsstring_operation, expr::objc_selector_operation, expr::objc_msgcall_operation, expr::opencl_binop_operation< OP, FUNC, BASE >, expr::opencl_structop_operation, expr::opencl_logical_binop_operation, expr::opencl_ternop_cond_operation, expr::float_const_operation, expr::scope_operation, expr::var_value_operation, expr::long_const_operation, expr::var_msym_value_operation, expr::var_entry_value_operation, expr::func_static_var_operation, expr::last_operation, expr::register_operation, expr::bool_operation, expr::internalvar_operation, expr::string_operation, expr::ternop_slice_operation, expr::ternop_cond_operation, expr::complex_operation, expr::structop_operation, expr::structop_ptr_operation, expr::structop_member_operation, expr::structop_mptr_operation, expr::concat_operation, expr::add_operation, expr::sub_operation, expr::binop_operation< OP, FUNC >, expr::binop_operation< BINOP_REPEAT, eval_op_repeat >, expr::comparison_operation< OP, FUNC >, expr::comparison_operation< BINOP_EQUAL, eval_op_equal >, expr::comma_operation, expr::unop_operation< OP, FUNC >, expr::unop_incr_operation< OP, FUNC >, expr::unop_ind_base_operation, expr::type_operation, expr::typeof_operation, expr::decltype_operation, expr::typeid_operation, expr::unop_addr_operation, expr::unop_sizeof_operation, expr::unop_alignof_operation, expr::unop_memval_operation, expr::unop_memval_type_operation, expr::op_this_operation, expr::type_instance_operation, expr::assign_operation, expr::assign_modify_operation, expr::unop_extract_operation, expr::unop_cast_operation, expr::unop_cast_type_operation, expr::cxx_cast_operation< OP, FUNC >, expr::multi_subscript_operation, expr::logical_and_operation, expr::logical_or_operation, expr::adl_func_operation, expr::array_operation, expr::funcall_operation, expr::fortran_range_operation, expr::fortran_undetermined, expr::fortran_bound_1arg, expr::fortran_bound_2arg, expr::fortran_structop_operation, expr::m2_unop_high_operation, expr::m2_binop_subscript_operation, expr::rust_unop_ind_operation, expr::rust_subscript_operation, expr::rust_unop_addr_operation, expr::rust_range_operation, expr::rust_struct_anon, expr::rust_structop, expr::rust_aggregate_operation, expr::rust_parenthesized_operation, expr::fortran_kind_2arg< OP, FUNC >, expr::fortran_kind_3arg< OP, FUNC >, and expr::fortran_bound_3arg.
Referenced by evaluate_for_address(), evaluate_for_cast(), evaluate_for_sizeof(), evaluate_with_coercion(), fetch_subexp_value(), and generate_ax().
|
virtual |
Reimplemented in expr::scope_operation, expr::var_value_operation, expr::var_msym_value_operation, expr::unop_ind_base_operation, expr::unop_memval_operation, and expr::unop_memval_type_operation.
Definition at line 2580 of file eval.c.
References evaluate(), and evaluate_subexp_for_address_base().
Referenced by expr::rust_unop_addr_operation::evaluate(), and expr::var_value_operation::evaluate_for_address().
|
virtual |
Reimplemented in expr::ada_var_value_operation, expr::ada_var_msym_value_operation, expr::var_value_operation, and expr::var_msym_value_operation.
Definition at line 2571 of file eval.c.
References evaluate(), and value_cast().
|
virtual |
Reimplemented in expr::var_value_operation, expr::var_msym_value_operation, expr::subscript_operation, expr::unop_ind_base_operation, expr::unop_memval_operation, and expr::unop_memval_type_operation.
Definition at line 2715 of file eval.c.
References EVAL_AVOID_SIDE_EFFECTS, evaluate(), evaluate_subexp_for_sizeof_base(), and value::type().
Referenced by expr::subscript_operation::evaluate_for_sizeof().
|
protected |
Definition at line 658 of file eval.c.
References type::code(), evaluate_subexp_do_call(), evaluate_with_coercion(), type::field(), type::target_type(), field::type(), and value::type().
|
inlinevirtual |
Reimplemented in expr::scope_operation, expr::var_value_operation, expr::var_msym_value_operation, expr::structop_base_operation, expr::structop_member_base, and expr::rust_structop.
Definition at line 131 of file expression.h.
References evaluate_funcall().
Referenced by evaluate_funcall(), expr::scope_operation::evaluate_funcall(), expr::var_value_operation::evaluate_funcall(), and expr::var_msym_value_operation::evaluate_funcall().
|
inlinevirtual |
Reimplemented in expr::var_value_operation.
Definition at line 105 of file expression.h.
References evaluate().
Referenced by expr::objc_msgcall_operation::evaluate(), expr::multi_subscript_operation::evaluate(), expr::adl_func_operation::evaluate(), evaluate_funcall(), expr::scope_operation::evaluate_funcall(), expr::structop_base_operation::evaluate_funcall(), expr::structop_member_base::evaluate_funcall(), fortran_prepare_argument(), and expr::fortran_undetermined::value_subarray().
void expr::operation::generate_ax | ( | struct expression * | exp, |
struct agent_expr * | ax, | ||
struct axs_value * | value, | ||
struct type * | cast_type = nullptr ) |
Definition at line 1592 of file ax-gdb.c.
References ax_const_l(), axs_rvalue, check_typedef(), constant_p(), do_generate_ax(), EVAL_AVOID_SIDE_EFFECTS, evaluate(), gen_cast(), value::type(), and value_as_long().
Referenced by gen_expr_binop(), gen_expr_structop(), and gen_expr_unop().
|
pure virtual |
Implemented in expr::ada_wrapped_operation, expr::ada_qual_operation, expr::ada_ternop_range_operation, expr::ada_unop_range_operation, expr::ada_binop_addsub_operation, expr::ada_binop_equal_operation, expr::ada_bitwise_operation< OP >, expr::ada_ternop_slice_operation, expr::ada_binop_in_bounds_operation, expr::ada_unop_atr_operation, expr::ada_atr_operation< FUNC >, expr::ada_structop_operation, expr::ada_funcall_operation, expr::ada_assign_operation, expr::ada_target_operation, expr::ada_aggregate_operation, expr::c_string_operation, expr::objc_nsstring_operation, expr::objc_selector_operation, expr::objc_msgcall_operation, expr::opencl_binop_operation< OP, FUNC, BASE >, expr::opencl_structop_operation, expr::opencl_logical_binop_operation, expr::opencl_ternop_cond_operation, expr::float_const_operation, expr::scope_operation, expr::var_value_operation, expr::long_const_operation, expr::var_msym_value_operation, expr::var_entry_value_operation, expr::func_static_var_operation, expr::last_operation, expr::register_operation, expr::bool_operation, expr::internalvar_operation, expr::string_operation, expr::ternop_slice_operation, expr::ternop_cond_operation, expr::complex_operation, expr::structop_operation, expr::structop_ptr_operation, expr::structop_member_operation, expr::structop_mptr_operation, expr::concat_operation, expr::add_operation, expr::sub_operation, expr::binop_operation< OP, FUNC >, expr::binop_operation< BINOP_REPEAT, eval_op_repeat >, expr::comma_operation, expr::unop_operation< OP, FUNC >, expr::unop_incr_operation< OP, FUNC >, expr::unop_ind_base_operation, expr::type_operation, expr::typeof_operation, expr::decltype_operation, expr::typeid_operation, expr::unop_addr_operation, expr::unop_sizeof_operation, expr::unop_alignof_operation, expr::unop_memval_operation, expr::unop_memval_type_operation, expr::op_this_operation, expr::type_instance_operation, expr::assign_operation, expr::assign_modify_operation, expr::unop_extract_operation, expr::unop_cast_operation, expr::unop_cast_type_operation, expr::cxx_cast_operation< OP, FUNC >, expr::multi_subscript_operation, expr::logical_and_operation, expr::logical_or_operation, expr::adl_func_operation, expr::array_operation, expr::funcall_operation, expr::fortran_kind_2arg< OP, FUNC >, expr::fortran_kind_3arg< OP, FUNC >, expr::fortran_range_operation, expr::fortran_undetermined, expr::fortran_bound_1arg, expr::fortran_bound_2arg, expr::fortran_bound_3arg, expr::fortran_structop_operation, expr::m2_unop_high_operation, expr::m2_binop_subscript_operation, expr::rust_subscript_operation, expr::rust_unop_addr_operation, expr::rust_range_operation, expr::rust_struct_anon, expr::rust_structop, expr::rust_aggregate_operation, and expr::rust_parenthesized_operation.
Referenced by expr::assign_operation::do_generate_ax(), expr::assign_modify_operation::do_generate_ax(), expr::tuple_holding_operation< Arg >::dump(), expr::structop_base_operation::evaluate_funcall(), and expr::structop_member_base::evaluate_funcall().
|
inlinevirtual |
Reimplemented in expr::var_msym_value_operation.
Definition at line 163 of file expression.h.
|
inlinevirtual |
Reimplemented in expr::tuple_holding_operation< Arg >, expr::tuple_holding_operation< ada_component_up >, expr::tuple_holding_operation< Arg... >, expr::tuple_holding_operation< bool >, expr::tuple_holding_operation< CORE_ADDR, operation_up, std::vector< operation_up > >, expr::tuple_holding_operation< enum c_string_type_values, std::vector< std::string > >, expr::tuple_holding_operation< enum exp_opcode, operation_up, operation_up >, expr::tuple_holding_operation< enum range_flag, operation_up, operation_up >, expr::tuple_holding_operation< enum range_flag, operation_up, operation_up, operation_up >, expr::tuple_holding_operation< exp_opcode, operation_up >, expr::tuple_holding_operation< exp_opcode, operation_up, operation_up >, expr::tuple_holding_operation< exp_opcode, operation_up, operation_up, type * >, expr::tuple_holding_operation< int >, expr::tuple_holding_operation< int, int, std::vector< operation_up > >, expr::tuple_holding_operation< int, operation_up >, expr::tuple_holding_operation< internalvar * >, expr::tuple_holding_operation< operation_up >, expr::tuple_holding_operation< operation_up, operation_up >, expr::tuple_holding_operation< operation_up, operation_up, operation_up >, expr::tuple_holding_operation< operation_up, operation_up, type * >, expr::tuple_holding_operation< operation_up, std::string >, expr::tuple_holding_operation< operation_up, std::vector< operation_up > >, expr::tuple_holding_operation< operation_up, struct type * >, expr::tuple_holding_operation< operation_up, type * >, expr::tuple_holding_operation< std::string >, expr::tuple_holding_operation< std::string, const block *, std::vector< operation_up > >, expr::tuple_holding_operation< struct type * >, expr::tuple_holding_operation< struct type *, gdb_mpz >, expr::tuple_holding_operation< struct type *, operation_up >, expr::tuple_holding_operation< struct type *, operation_up, std::vector< std::pair< std::string, operation_up > > >, expr::tuple_holding_operation< symbol * >, expr::tuple_holding_operation< type_instance_flags, std::vector< type * >, operation_up >, and expr::tuple_holding_operation<>.
Definition at line 147 of file expression.h.