GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Namespaces | Typedefs | Functions
expop.h File Reference
#include "c-lang.h"
#include "cp-abi.h"
#include "expression.h"
#include "language.h"
#include "objfiles.h"
#include "gdbsupport/traits.h"
#include "gdbsupport/enum-flags.h"

Go to the source code of this file.

Classes

class  expr::tuple_holding_operation< Arg >
 
class  expr::maybe_constant_operation< Arg >
 
class  expr::float_const_operation
 
class  expr::scope_operation
 
class  expr::var_value_operation
 
class  expr::long_const_operation
 
class  expr::var_msym_value_operation
 
class  expr::var_entry_value_operation
 
class  expr::func_static_var_operation
 
class  expr::last_operation
 
class  expr::register_operation
 
class  expr::bool_operation
 
class  expr::internalvar_operation
 
class  expr::string_operation
 
class  expr::ternop_slice_operation
 
class  expr::ternop_cond_operation
 
class  expr::complex_operation
 
class  expr::structop_base_operation
 
class  expr::structop_operation
 
class  expr::structop_ptr_operation
 
class  expr::structop_member_base
 
class  expr::structop_member_operation
 
class  expr::structop_mptr_operation
 
class  expr::concat_operation
 
class  expr::add_operation
 
class  expr::sub_operation
 
class  expr::binop_operation< OP, FUNC >
 
class  expr::usual_ax_binop_operation< OP, FUNC >
 
class  expr::subscript_operation
 
class  expr::comparison_operation< OP, FUNC >
 
class  expr::equal_operation
 
class  expr::repeat_operation
 
class  expr::comma_operation
 
class  expr::unop_operation< OP, FUNC >
 
class  expr::usual_ax_unop_operation< OP, FUNC >
 
class  expr::unop_incr_operation< OP, FUNC >
 
class  expr::unop_ind_base_operation
 
class  expr::unop_ind_operation
 
class  expr::type_operation
 
class  expr::typeof_operation
 
class  expr::decltype_operation
 
class  expr::typeid_operation
 
class  expr::unop_addr_operation
 
class  expr::unop_sizeof_operation
 
class  expr::unop_alignof_operation
 
class  expr::unop_memval_operation
 
class  expr::unop_memval_type_operation
 
class  expr::op_this_operation
 
class  expr::type_instance_operation
 
class  expr::assign_operation
 
class  expr::assign_modify_operation
 
class  expr::unop_extract_operation
 
class  expr::unop_cast_operation
 
class  expr::unop_cast_type_operation
 
class  expr::cxx_cast_operation< OP, FUNC >
 
class  expr::multi_subscript_operation
 
class  expr::logical_and_operation
 
class  expr::logical_or_operation
 
class  expr::adl_func_operation
 
class  expr::array_operation
 
class  expr::funcall_operation
 

Namespaces

namespace  expr
 

Typedefs

typedef std::array< gdb_byte, 16 > expr::float_data
 
typedef struct valueexpr::binary_ftype(struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct value *arg2)
 
using expr::exp_operation = binop_operation<BINOP_EXP, eval_op_binary>
 
using expr::intdiv_operation = binop_operation<BINOP_INTDIV, eval_op_binary>
 
using expr::mod_operation = binop_operation<BINOP_MOD, eval_op_binary>
 
using expr::mul_operation = usual_ax_binop_operation<BINOP_MUL, eval_op_binary>
 
using expr::div_operation = usual_ax_binop_operation<BINOP_DIV, eval_op_binary>
 
using expr::rem_operation = usual_ax_binop_operation<BINOP_REM, eval_op_binary>
 
using expr::lsh_operation = usual_ax_binop_operation<BINOP_LSH, eval_op_binary>
 
using expr::rsh_operation = usual_ax_binop_operation<BINOP_RSH, eval_op_binary>
 
using expr::bitwise_and_operation = usual_ax_binop_operation<BINOP_BITWISE_AND, eval_op_binary>
 
using expr::bitwise_ior_operation = usual_ax_binop_operation<BINOP_BITWISE_IOR, eval_op_binary>
 
using expr::bitwise_xor_operation = usual_ax_binop_operation<BINOP_BITWISE_XOR, eval_op_binary>
 
using expr::notequal_operation = comparison_operation<BINOP_NOTEQUAL, eval_op_notequal>
 
using expr::less_operation = comparison_operation<BINOP_LESS, eval_op_less>
 
using expr::gtr_operation = comparison_operation<BINOP_GTR, eval_op_gtr>
 
using expr::geq_operation = comparison_operation<BINOP_GEQ, eval_op_geq>
 
using expr::leq_operation = comparison_operation<BINOP_LEQ, eval_op_leq>
 
typedef struct valueexpr::unary_ftype(struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1)
 
using expr::unary_plus_operation = usual_ax_unop_operation<UNOP_PLUS, eval_op_plus>
 
using expr::unary_neg_operation = usual_ax_unop_operation<UNOP_NEG, eval_op_neg>
 
using expr::unary_complement_operation = usual_ax_unop_operation<UNOP_COMPLEMENT, eval_op_complement>
 
using expr::unary_logical_not_operation = usual_ax_unop_operation<UNOP_LOGICAL_NOT, eval_op_lognot>
 
using expr::preinc_operation = unop_incr_operation<UNOP_PREINCREMENT, eval_op_preinc>
 
using expr::predec_operation = unop_incr_operation<UNOP_PREDECREMENT, eval_op_predec>
 
using expr::postinc_operation = unop_incr_operation<UNOP_POSTINCREMENT, eval_op_postinc>
 
using expr::postdec_operation = unop_incr_operation<UNOP_POSTDECREMENT, eval_op_postdec>
 
typedef valueexpr::cxx_cast_ftype(struct type *, value *)
 
using expr::dynamic_cast_operation
 
using expr::reinterpret_cast_operation
 

Functions

void gen_expr_binop (struct expression *exp, enum exp_opcode op, expr::operation *lhs, expr::operation *rhs, struct agent_expr *ax, struct axs_value *value)
 
void gen_expr_structop (struct expression *exp, enum exp_opcode op, expr::operation *lhs, const char *name, struct agent_expr *ax, struct axs_value *value)
 
void gen_expr_unop (struct expression *exp, enum exp_opcode op, expr::operation *lhs, struct agent_expr *ax, struct axs_value *value)
 
struct valueeval_op_scope (struct type *expect_type, struct expression *exp, enum noside noside, struct type *type, const char *string)
 
struct valueeval_op_var_msym_value (struct type *expect_type, struct expression *exp, enum noside noside, bool outermost_p, bound_minimal_symbol msymbol)
 
struct valueeval_op_var_entry_value (struct type *expect_type, struct expression *exp, enum noside noside, symbol *sym)
 
struct valueeval_op_func_static_var (struct type *expect_type, struct expression *exp, enum noside noside, value *func, const char *var)
 
struct valueeval_op_register (struct type *expect_type, struct expression *exp, enum noside noside, const char *name)
 
struct valueeval_op_structop_struct (struct type *expect_type, struct expression *exp, enum noside noside, struct value *arg1, const char *string)
 
struct valueeval_op_structop_ptr (struct type *expect_type, struct expression *exp, enum noside noside, struct value *arg1, const char *string)
 
struct valueeval_op_member (struct type *expect_type, struct expression *exp, enum noside noside, struct value *arg1, struct value *arg2)
 
struct valueeval_op_add (struct type *expect_type, struct expression *exp, enum noside noside, struct value *arg1, struct value *arg2)
 
struct valueeval_op_sub (struct type *expect_type, struct expression *exp, enum noside noside, struct value *arg1, struct value *arg2)
 
struct valueeval_op_binary (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct value *arg2)
 
struct valueeval_op_subscript (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct value *arg2)
 
struct valueeval_op_equal (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct value *arg2)
 
struct valueeval_op_notequal (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct value *arg2)
 
struct valueeval_op_less (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct value *arg2)
 
struct valueeval_op_gtr (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct value *arg2)
 
struct valueeval_op_geq (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct value *arg2)
 
struct valueeval_op_leq (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct value *arg2)
 
struct valueeval_op_repeat (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct value *arg2)
 
struct valueeval_op_plus (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1)
 
struct valueeval_op_neg (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1)
 
struct valueeval_op_complement (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1)
 
struct valueeval_op_lognot (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1)
 
struct valueeval_op_preinc (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1)
 
struct valueeval_op_predec (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1)
 
struct valueeval_op_postinc (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1)
 
struct valueeval_op_postdec (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1)
 
struct valueeval_op_ind (struct type *expect_type, struct expression *exp, enum noside noside, struct value *arg1)
 
struct valueeval_op_type (struct type *expect_type, struct expression *exp, enum noside noside, struct type *type)
 
struct valueeval_op_alignof (struct type *expect_type, struct expression *exp, enum noside noside, struct value *arg1)
 
struct valueeval_op_memval (struct type *expect_type, struct expression *exp, enum noside noside, struct value *arg1, struct type *type)
 
struct valueeval_binop_assign_modify (struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct value *arg2)
 
static bool expr::check_objfile (struct objfile *exp_objfile, struct objfile *objfile)
 
static bool expr::check_objfile (struct type *type, struct objfile *objfile)
 
static bool expr::check_objfile (struct symbol *sym, struct objfile *objfile)
 
bool expr::check_objfile (const struct block *block, struct objfile *objfile)
 
static bool expr::check_objfile (const block_symbol &sym, struct objfile *objfile)
 
static bool expr::check_objfile (bound_minimal_symbol minsym, struct objfile *objfile)
 
static bool expr::check_objfile (internalvar *ivar, struct objfile *objfile)
 
static bool expr::check_objfile (const std::string &str, struct objfile *objfile)
 
static bool expr::check_objfile (const operation_up &op, struct objfile *objfile)
 
static bool expr::check_objfile (enum exp_opcode val, struct objfile *objfile)
 
static bool expr::check_objfile (ULONGEST val, struct objfile *objfile)
 
static bool expr::check_objfile (const gdb_mpz &val, struct objfile *objfile)
 
template<typename T >
static bool expr::check_objfile (enum_flags< T > val, struct objfile *objfile)
 
template<typename T >
static bool expr::check_objfile (const std::vector< T > &collection, struct objfile *objfile)
 
template<typename S , typename T >
static bool expr::check_objfile (const std::pair< S, T > &item, struct objfile *objfile)
 
bool expr::check_objfile (const std::unique_ptr< ada_component > &comp, struct objfile *objfile)
 
static void expr::dump_for_expression (struct ui_file *stream, int depth, const operation_up &op)
 
void expr::dump_for_expression (struct ui_file *stream, int depth, enum exp_opcode op)
 
void expr::dump_for_expression (struct ui_file *stream, int depth, const std::string &str)
 
void expr::dump_for_expression (struct ui_file *stream, int depth, struct type *type)
 
void expr::dump_for_expression (struct ui_file *stream, int depth, CORE_ADDR addr)
 
void expr::dump_for_expression (struct ui_file *stream, int depth, const gdb_mpz &addr)
 
void expr::dump_for_expression (struct ui_file *stream, int depth, internalvar *ivar)
 
void expr::dump_for_expression (struct ui_file *stream, int depth, symbol *sym)
 
void expr::dump_for_expression (struct ui_file *stream, int depth, const block_symbol &sym)
 
void expr::dump_for_expression (struct ui_file *stream, int depth, bound_minimal_symbol msym)
 
void expr::dump_for_expression (struct ui_file *stream, int depth, const block *bl)
 
void expr::dump_for_expression (struct ui_file *stream, int depth, type_instance_flags flags)
 
void expr::dump_for_expression (struct ui_file *stream, int depth, enum c_string_type_values flags)
 
void expr::dump_for_expression (struct ui_file *stream, int depth, enum range_flag flags)
 
void expr::dump_for_expression (struct ui_file *stream, int depth, const std::unique_ptr< ada_component > &comp)
 
template<typename T >
void expr::dump_for_expression (struct ui_file *stream, int depth, const std::vector< T > &vals)
 
template<typename X , typename Y >
void expr::dump_for_expression (struct ui_file *stream, int depth, const std::pair< X, Y > &vals)
 
static bool expr::check_constant (const operation_up &item)
 
static bool expr::check_constant (bound_minimal_symbol msym)
 
static bool expr::check_constant (struct type *type)
 
static bool expr::check_constant (const struct block *block)
 
static bool expr::check_constant (const std::string &str)
 
static bool expr::check_constant (ULONGEST cst)
 
static bool expr::check_constant (const gdb_mpz &cst)
 
static bool expr::check_constant (struct symbol *sym)
 
static bool expr::check_constant (const block_symbol &sym)
 
template<typename T >
static bool expr::check_constant (const std::vector< T > &collection)
 
template<typename S , typename T >
static bool expr::check_constant (const std::pair< S, T > &item)
 

Function Documentation

◆ eval_binop_assign_modify()

struct value * eval_binop_assign_modify ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1,
struct value * arg2 )
extern

◆ eval_op_add()

struct value * eval_op_add ( struct type * expect_type,
struct expression * exp,
enum noside noside,
struct value * arg1,
struct value * arg2 )
extern

◆ eval_op_alignof()

struct value * eval_op_alignof ( struct type * expect_type,
struct expression * exp,
enum noside noside,
struct value * arg1 )
extern

◆ eval_op_binary()

struct value * eval_op_binary ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1,
struct value * arg2 )
extern

◆ eval_op_complement()

struct value * eval_op_complement ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1 )
extern

◆ eval_op_equal()

struct value * eval_op_equal ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1,
struct value * arg2 )
extern

◆ eval_op_func_static_var()

struct value * eval_op_func_static_var ( struct type * expect_type,
struct expression * exp,
enum noside noside,
value * func,
const char * var )
extern

◆ eval_op_geq()

struct value * eval_op_geq ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1,
struct value * arg2 )
extern

◆ eval_op_gtr()

struct value * eval_op_gtr ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1,
struct value * arg2 )
extern

◆ eval_op_ind()

struct value * eval_op_ind ( struct type * expect_type,
struct expression * exp,
enum noside noside,
struct value * arg1 )
extern

◆ eval_op_leq()

struct value * eval_op_leq ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1,
struct value * arg2 )
extern

◆ eval_op_less()

struct value * eval_op_less ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1,
struct value * arg2 )
extern

◆ eval_op_lognot()

struct value * eval_op_lognot ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1 )
extern

◆ eval_op_member()

struct value * eval_op_member ( struct type * expect_type,
struct expression * exp,
enum noside noside,
struct value * arg1,
struct value * arg2 )
extern

◆ eval_op_memval()

struct value * eval_op_memval ( struct type * expect_type,
struct expression * exp,
enum noside noside,
struct value * arg1,
struct type * type )
extern

◆ eval_op_neg()

struct value * eval_op_neg ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1 )
extern

◆ eval_op_notequal()

struct value * eval_op_notequal ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1,
struct value * arg2 )
extern

◆ eval_op_plus()

struct value * eval_op_plus ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1 )
extern

◆ eval_op_postdec()

struct value * eval_op_postdec ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1 )
extern

◆ eval_op_postinc()

struct value * eval_op_postinc ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1 )
extern

◆ eval_op_predec()

struct value * eval_op_predec ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1 )
extern

◆ eval_op_preinc()

struct value * eval_op_preinc ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1 )
extern

◆ eval_op_register()

struct value * eval_op_register ( struct type * expect_type,
struct expression * exp,
enum noside noside,
const char * name )
extern

◆ eval_op_repeat()

struct value * eval_op_repeat ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1,
struct value * arg2 )
extern

◆ eval_op_scope()

struct value * eval_op_scope ( struct type * expect_type,
struct expression * exp,
enum noside noside,
struct type * type,
const char * string )
extern

Definition at line 1053 of file eval.c.

References value_aggregate_elt().

Referenced by expr::scope_operation::evaluate().

◆ eval_op_structop_ptr()

struct value * eval_op_structop_ptr ( struct type * expect_type,
struct expression * exp,
enum noside noside,
struct value * arg1,
const char * string )
extern

◆ eval_op_structop_struct()

struct value * eval_op_structop_struct ( struct type * expect_type,
struct expression * exp,
enum noside noside,
struct value * arg1,
const char * string )
extern

◆ eval_op_sub()

struct value * eval_op_sub ( struct type * expect_type,
struct expression * exp,
enum noside noside,
struct value * arg1,
struct value * arg2 )
extern

◆ eval_op_subscript()

struct value * eval_op_subscript ( struct type * expect_type,
struct expression * exp,
enum noside noside,
enum exp_opcode op,
struct value * arg1,
struct value * arg2 )
extern

◆ eval_op_type()

struct value * eval_op_type ( struct type * expect_type,
struct expression * exp,
enum noside noside,
struct type * type )
extern

Definition at line 1851 of file eval.c.

References value::allocate(), and EVAL_AVOID_SIDE_EFFECTS.

Referenced by expr::type_operation::constant_p().

◆ eval_op_var_entry_value()

struct value * eval_op_var_entry_value ( struct type * expect_type,
struct expression * exp,
enum noside noside,
symbol * sym )
extern

◆ eval_op_var_msym_value()

struct value * eval_op_var_msym_value ( struct type * expect_type,
struct expression * exp,
enum noside noside,
bool outermost_p,
bound_minimal_symbol msymbol )
extern

◆ gen_expr_binop()

void gen_expr_binop ( struct expression * exp,
enum exp_opcode op,
expr::operation * lhs,
expr::operation * rhs,
struct agent_expr * ax,
struct axs_value * value )
extern

◆ gen_expr_structop()

void gen_expr_structop ( struct expression * exp,
enum exp_opcode op,
expr::operation * lhs,
const char * name,
struct agent_expr * ax,
struct axs_value * value )
extern

◆ gen_expr_unop()

void gen_expr_unop ( struct expression * exp,
enum exp_opcode op,
expr::operation * lhs,
struct agent_expr * ax,
struct axs_value * value )
extern