50#include "gdbsupport/format.h"
100 struct type *from,
struct type *to);
117 struct type *result_type);
123 enum agent_op op_unsigned,
int may_carry,
126 struct type *result_type);
131 struct type *
type,
int start,
int end);
134 int offset,
int fieldno,
struct type *
type);
137 const char *
field,
int offset,
142 const char *operator_name,
143 const char *operand_name);
241 for (i = 0; i < nbases; i++)
255 int string_trace = 0;
369 if (
type->
code () == TYPE_CODE_RANGE)
376 case TYPE_CODE_RVALUE_REF:
385 case 8 / TARGET_CHAR_BIT:
388 case 16 / TARGET_CHAR_BIT:
391 case 32 / TARGET_CHAR_BIT:
394 case 64 / TARGET_CHAR_BIT:
403 internal_error (_(
"gen_fetch: strange size"));
413 error (_(
"gen_fetch: Unsupported type code `%s'."),
430 else if (distance < 0)
447 LONGEST frame_offset;
450 ax->
scope, &frame_reg, &frame_offset);
462 LONGEST frame_offset;
465 ax->
scope, &frame_reg, &frame_offset);
535 internal_error (_(
"gen_var_ref: LOC_CONST_BYTES "
536 "symbols are not supported"));
567 error (_(
"Cannot compute value of typedef `%s'."),
601 error (_(
"Couldn't resolve symbol `%s'."), var->
print_name ());
610 gdb_assert_not_reached (
"LOC_COMPUTED variable missing a method");
619 error (_(
"Cannot find value of botched symbol `%s'."),
672 error (_(
"Value not scalar: cannot be an rvalue."));
734 case TYPE_CODE_ARRAY:
747 case TYPE_CODE_STRUCT:
748 case TYPE_CODE_UNION:
821 nontrivial = ax->len > 0;
836 if (value1->
type->
code () == TYPE_CODE_INT
837 && value2->
type->
code () == TYPE_CODE_INT)
900 case TYPE_CODE_RVALUE_REF:
905 case TYPE_CODE_ARRAY:
906 case TYPE_CODE_STRUCT:
907 case TYPE_CODE_UNION:
909 error (_(
"Invalid type cast: intended type must be scalar."));
932 error (_(
"Casts to requested type are not yet implemented."));
949 if (element->
length () != 1)
963 gdb_assert (value2->
type->
code () == TYPE_CODE_INT);
979 gdb_assert (value2->
type->
code () == TYPE_CODE_INT);
993 struct type *result_type)
1001First argument of `-' is a pointer, but second argument is neither\n\
1002an integer nor a pointer of the same type."));
1013 struct type *result_type)
1019 aop_equal, aop_equal, 0,
"equal");
1027 struct type *result_type)
1033 aop_less_signed, aop_less_unsigned, 0,
"less than");
1048 int may_carry,
const char *
name)
1051 if ((value1->
type->
code () != TYPE_CODE_INT)
1052 || (value2->
type->
code () != TYPE_CODE_INT))
1053 error (_(
"Invalid combination of types in %s."),
name);
1065 struct type *result_type)
1069 error (_(
"Invalid type of operand to `!'."));
1080 error (_(
"Invalid type of operand to `~'."));
1097 internal_error (_(
"gen_deref: expected a pointer"));
1106 error (_(
"Attempt to dereference a generic pointer."));
1124 switch (
value->kind)
1127 error (_(
"Operand of `&' is an rvalue, which has no address."));
1130 error (_(
"Operand of `&' is in a register, and has no address."));
1145 struct type *
type,
int start,
int end)
1149 = {aop_ref8, aop_ref16, aop_ref32, aop_ref64};
1150 static int num_ops = (
sizeof (ops) /
sizeof (ops[0]));
1180 int bound_start = (start / TARGET_CHAR_BIT) * TARGET_CHAR_BIT;
1181 int bound_end = (((end + TARGET_CHAR_BIT - 1)
1199 if ((end - start) > ((1 << num_ops) * 8))
1200 internal_error (_(
"gen_bitfield_ref: bitfield too wide"));
1204 offset = bound_start;
1206 for (op = num_ops - 1; op >= 0; op--)
1209 int op_size = 8 << op;
1215 if (offset + op_size <= bound_end)
1218 int last_frag = (offset + op_size == bound_end);
1285 while (fragment_count-- > 1)
1303 int offset,
int fieldno,
struct type *
type)
1308 (offset * TARGET_CHAR_BIT
1310 (offset * TARGET_CHAR_BIT
1340 if (strcmp (
field, this_name) == 0)
1350 error (_(
"static field `%s' has been "
1351 "optimized out, cannot use"),
1360 if (this_name[0] ==
'\0')
1361 internal_error (_(
"find_field: anonymous unions not supported"));
1367 for (i = 0; i < nbases; i++)
1390 const char *
field,
const char *operator_name,
1391 const char *operand_name)
1407 if (
type->
code () != TYPE_CODE_STRUCT
1408 &&
type->
code () != TYPE_CODE_UNION)
1409 error (_(
"The left operand of `%s' is not a %s."),
1410 operator_name, operand_name);
1415 error (_(
"Structure does not live in memory."));
1421 error (_(
"Couldn't find member named `%s' in struct/union/class `%s'"),
1427 const struct type *curtype,
const char *
name);
1430 const struct type *curtype,
const char *
name);
1467 struct type *
type,
const char *fieldname)
1472 if (t->
code () != TYPE_CODE_STRUCT
1473 && t->
code () != TYPE_CODE_UNION)
1474 internal_error (_(
"non-aggregate type to gen_struct_elt_for_reference"));
1478 const char *t_field_name = t->
field (i).
name ();
1480 if (t_field_name && strcmp (t_field_name, fieldname) == 0)
1486 error (_(
"static field `%s' has been "
1487 "optimized out, cannot use"),
1492 error (_(
"pointers to bitfield members not allowed"));
1496 error (_(
"Cannot reference non-static field \"%s\""), fieldname);
1511 const struct type *curtype,
const char *
name)
1516 error (_(
"No symbol \"%s\" in namespace \"%s\"."),
1530 const struct type *curtype,
const char *
name)
1545 error (_(
"`%s' has been optimized out, cannot use"),
1558 case TYPE_CODE_STRUCT:
1559 case TYPE_CODE_UNION:
1562 case TYPE_CODE_NAMESPACE:
1566 internal_error (_(
"non-aggregate type in gen_aggregate_elt_ref"));
1581 struct type *cast_type)
1593 if (cast_type !=
nullptr)
1602 struct type *cast_type)
1608 error (_(
"There is no field named %s"),
name.c_str ());
1615 struct type *cast_type)
1625 struct type *cast_type)
1632 if (cast_type ==
nullptr)
1642 struct type *cast_type)
1645 int len = std::get<0> (
m_storage).size ();
1650 internal_error (_(
"Register $%s not available"),
name);
1653 error (_(
"'%s' is a user-register; "
1654 "GDB cannot yet trace user-register contents."),
1665 struct type *cast_type)
1682 error (_(
"$%s is not a trace state variable; GDB agent "
1683 "expressions cannot use convenience variables."),
name);
1690 struct type *cast_type)
1692 struct axs_value value1, value2, value3;
1695 std::get<0> (
m_storage)->generate_ax (exp, ax, &value1);
1702 if1 =
ax_goto (ax, aop_if_goto);
1703 std::get<1> (
m_storage)->generate_ax (exp, ax, &value2);
1707 std::get<2> (
m_storage)->generate_ax (exp, ax, &value3);
1730 struct type *cast_type)
1736 std::get<0> (
m_storage)->generate_ax (exp, ax, &value1);
1738 error (_(
"Left operand of `@' must be an object in memory."));
1742 error (_(
"Right operand of `@' must be a "
1743 "constant, in agent expressions."));
1746 = std::get<1> (
m_storage)->evaluate (
nullptr, exp,
1749 error (_(
"Right operand of `@' must be an integer."));
1752 error (_(
"Right operand of `@' must be positive."));
1769 struct type *cast_type)
1778 std::get<0> (
m_storage)->generate_ax (exp, ax, &value1);
1791 struct type *cast_type)
1798 int start = ax->
len;
1814 struct type *cast_type)
1824 struct type *cast_type)
1831 error (_(
"can't generate agent expression to extract non-scalar type"));
1843 struct type *cast_type)
1860 struct type *cast_type)
1863 = std::get<0> (
m_storage)->evaluate (
nullptr, exp,
1883 struct type *cast_type)
1886 const struct block *b;
1900 error (_(
"`%s' has been optimized out, cannot use"),
1908 struct type *cast_type)
1911 if (subop->
opcode () != OP_INTERNALVAR)
1912 error (_(
"May only assign to trace state variables"));
1915 = gdb::checked_static_cast<internalvar_operation *> (subop);
1929 error (_(
"$%s is not a trace state variable, "
1930 "may not assign to it"),
name);
1937 struct type *cast_type)
1940 if (subop->
opcode () != OP_INTERNALVAR)
1941 error (_(
"May only assign to trace state variables"));
1944 = gdb::checked_static_cast<internalvar_operation *> (subop);
1961 std::get<2> (
m_storage)->generate_ax (exp, ax, &value2);
1963 value, &value1, &value2);
1970 error (_(
"$%s is not a trace state variable, "
1971 "may not assign to it"),
name);
1978 struct type *cast_type)
1981 = std::get<0> (
m_storage)->evaluate (
nullptr, exp,
1990 struct type *cast_type)
1995 error (_(
"`%s' has been optimized out, cannot use"),
2000 if (cast_type ==
nullptr)
2010 struct type *cast_type)
2013 int if1, go1, if2, go2, end;
2016 std::get<0> (
m_storage)->generate_ax (exp, ax, &value1);
2018 if1 =
ax_goto (ax, aop_if_goto);
2021 std::get<1> (
m_storage)->generate_ax (exp, ax, &value2);
2023 if2 =
ax_goto (ax, aop_if_goto);
2040 struct type *cast_type)
2046 std::get<0> (
m_storage)->generate_ax (exp, ax, &value1);
2048 if1 =
ax_goto (ax, aop_if_goto);
2049 std::get<1> (
m_storage)->generate_ax (exp, ax, &value2);
2051 if2 =
ax_goto (ax, aop_if_goto);
2081 if (value1->
type->
code () == TYPE_CODE_INT
2089 && value2->
type->
code () == TYPE_CODE_INT)
2093 aop_add, aop_add, 1,
"addition");
2097 && value2->
type->
code () == TYPE_CODE_INT)
2106 aop_sub, aop_sub, 1,
"subtraction");
2110 aop_mul, aop_mul, 1,
"multiplication");
2114 aop_div_signed, aop_div_unsigned, 1,
"division");
2118 aop_rem_signed, aop_rem_unsigned, 1,
"remainder");
2122 aop_lsh, aop_lsh, 1,
"left shift");
2126 aop_rsh_signed, aop_rsh_unsigned, 1,
"right shift");
2128 case BINOP_SUBSCRIPT:
2134 error (_(
"cannot subscript requested type: "
2135 "cannot call user defined functions"));
2143 if (
type->
code () != TYPE_CODE_ARRAY
2147 error (_(
"cannot subscript something of type `%s'"),
2150 error (_(
"cannot subscript requested type"));
2155 error (_(
"Argument to arithmetic operation "
2156 "not a number or boolean."));
2162 case BINOP_BITWISE_AND:
2164 aop_bit_and, aop_bit_and, 0,
"bitwise and");
2167 case BINOP_BITWISE_IOR:
2169 aop_bit_or, aop_bit_or, 0,
"bitwise or");
2172 case BINOP_BITWISE_XOR:
2174 aop_bit_xor, aop_bit_xor, 0,
"bitwise exclusive-or");
2181 case BINOP_NOTEQUAL:
2209 internal_error (_(
"gen_expr: op case sets don't match"));
2240 if (op == STRUCTOP_STRUCT)
2242 else if (op == STRUCTOP_PTR)
2244 "pointer to a structure or union");
2248 internal_error (_(
"gen_expr: unhandled struct case"));
2270 gen_binop (ax,
value, &value1, &value2, aop_sub, aop_sub, 1,
"negation");
2279 case UNOP_LOGICAL_NOT:
2285 case UNOP_COMPLEMENT:
2296 error (_(
"Argument of unary `*' is not a pointer."));
2306 gdb_assert_not_reached (
"invalid case in gen_expr_unop");
2319 struct symbol *var,
int trace_string)
2325 ax->trace_string = trace_string;
2358 ax->trace_string = trace_string;
2404 ax->trace_string = trace_string;
2423 CORE_ADDR function, LONGEST channel,
2424 const char *format,
int fmtlen,
2436 for (tem = nargs - 1; tem >= 0; --tem)
2439 exprs[tem]->
op->generate_ax (exprs[tem], ax.get (), &
value);
2462 int trace_string = 0;
2473 if (!eval && strcmp (arg,
"$_ret") == 0)
2484 gdb_assert (trace_string == 0);
2508 error (_(
"GDB can't do agent expression translation with overlays."));
2520 NULL, 0, &canonical,
2522 exp = skip_spaces (exp);
2526 exp = skip_spaces (exp);
2528 for (
const auto &lsal : canonical.
lsals)
2529 for (
const auto &sal : lsal.sals)
2561 const char *format_start, *format_end;
2568 error (_(
"GDB can't do agent expression translation with overlays."));
2573 cmdrest = skip_spaces (cmdrest);
2575 if (*cmdrest++ !=
'"')
2576 error (_(
"Must start with a format string."));
2578 format_start = cmdrest;
2580 format_pieces fpieces (&cmdrest);
2582 format_end = cmdrest;
2584 if (*cmdrest++ !=
'"')
2585 error (_(
"Bad format string, non-terminated '\"'."));
2587 cmdrest = skip_spaces (cmdrest);
2589 if (*cmdrest !=
',' && *cmdrest != 0)
2590 error (_(
"Invalid argument syntax"));
2592 if (*cmdrest ==
',')
2594 cmdrest = skip_spaces (cmdrest);
2596 std::vector<struct expression *> argvec;
2597 while (*cmdrest !=
'\0')
2603 argvec.push_back (
expr.release ());
2605 if (*cmdrest ==
',')
2613 format_start, format_end - format_start,
2614 argvec.size (), argvec.
data ());
2632Translate an expression into remote agent bytecode for tracing.\n\
2633Usage: maint agent [-at LOCATION,] EXPRESSION\n\
2634If -at is given, generate remote agent bytecode for this location.\n\
2635If not, generate remote agent bytecode for current frame pc address."),
2640Translate an expression into remote agent bytecode for evaluation.\n\
2641Usage: maint agent-eval [-at LOCATION,] EXPRESSION\n\
2642If -at is given, generate remote agent bytecode for this location.\n\
2643If not, generate remote agent bytecode for current frame pc address."),
2647 _(
"Translate an expression into remote "
2648 "agent bytecode for evaluation and display the bytecodes."),
#define bits(obj, st, fn)
struct gdbarch * get_current_arch(void)
static void gen_integral_promotions(struct agent_expr *ax, struct axs_value *value)
void require_rvalue(struct agent_expr *ax, struct axs_value *value)
static void gen_primitive_field(struct agent_expr *ax, struct axs_value *value, int offset, int fieldno, struct type *type)
static void gen_static_field(struct agent_expr *ax, struct axs_value *value, struct type *type, int fieldno)
static void gen_cast(struct agent_expr *ax, struct axs_value *value, struct type *type)
static void gen_sign_extend(struct agent_expr *, struct type *)
static void gen_deref(struct axs_value *)
static void gen_logical_not(struct agent_expr *ax, struct axs_value *value, struct type *result_type)
static void gen_binop(struct agent_expr *ax, struct axs_value *value, struct axs_value *value1, struct axs_value *value2, enum agent_op op, enum agent_op op_unsigned, int may_carry, const char *name)
static void gen_int_literal(struct agent_expr *ax, struct axs_value *value, LONGEST k, struct type *type)
static void gen_ptradd(struct agent_expr *ax, struct axs_value *value, struct axs_value *value1, struct axs_value *value2)
agent_expr_up gen_eval_for_expr(CORE_ADDR scope, struct expression *expr)
static void gen_scale(struct agent_expr *ax, enum agent_op op, struct type *type)
static void gen_trace_static_fields(struct agent_expr *ax, struct type *type)
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)
static void gen_equal(struct agent_expr *ax, struct axs_value *value, struct axs_value *value1, struct axs_value *value2, struct type *result_type)
static int gen_struct_ref_recursive(struct agent_expr *ax, struct axs_value *value, const char *field, int offset, struct type *type)
static void gen_usual_arithmetic(struct agent_expr *ax, struct axs_value *value1, struct axs_value *value2)
static void gen_complement(struct agent_expr *ax, struct axs_value *value)
static void gen_less(struct agent_expr *ax, struct axs_value *value, struct axs_value *value1, struct axs_value *value2, struct type *result_type)
static int gen_aggregate_elt_ref(struct agent_expr *ax, struct axs_value *value, struct type *type, const char *field)
static void maint_agent_command_1(const char *exp, int eval)
static void gen_address_of(struct axs_value *)
static void gen_frame_locals_address(struct agent_expr *)
static struct type * max_type(struct type *type1, struct type *type2)
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)
static void gen_offset(struct agent_expr *ax, int offset)
static void gen_sym_offset(struct agent_expr *, struct symbol *)
static void gen_expr_binop_rest(struct expression *exp, enum exp_opcode op, struct agent_expr *ax, struct axs_value *value, struct axs_value *value1, struct axs_value *value2)
static void gen_bitfield_ref(struct agent_expr *ax, struct axs_value *value, struct type *type, int start, int end)
static void gen_traced_pop(struct agent_expr *, struct axs_value *)
agent_expr_up gen_trace_for_expr(CORE_ADDR scope, struct expression *expr, int trace_string)
static void gen_usual_unary(struct agent_expr *ax, struct axs_value *value)
static int gen_namespace_elt(struct agent_expr *ax, struct axs_value *value, const struct type *curtype, const char *name)
static void gen_msym_var_ref(agent_expr *ax, axs_value *value, minimal_symbol *msymbol, objfile *objf)
static void gen_var_ref(struct agent_expr *ax, struct axs_value *value, struct symbol *var)
static void gen_ptrsub(struct agent_expr *ax, struct axs_value *value, struct axs_value *value1, struct axs_value *value2)
static void maint_agent_eval_command(const char *exp, int from_tty)
static void agent_eval_command_one(const char *exp, int eval, CORE_ADDR pc)
static void gen_struct_ref(struct agent_expr *ax, struct axs_value *value, const char *field, const char *operator_name, const char *operand_name)
static int type_wider_than(struct type *type1, struct type *type2)
void _initialize_ax_gdb()
static void maint_agent_command(const char *exp, int from_tty)
static int gen_maybe_namespace_elt(struct agent_expr *ax, struct axs_value *value, const struct type *curtype, const char *name)
static void gen_left_shift(struct agent_expr *, int)
void gen_expr_unop(struct expression *exp, enum exp_opcode op, expr::operation *lhs, struct agent_expr *ax, struct axs_value *value)
static void gen_fetch(struct agent_expr *, struct type *)
static void maint_agent_printf_command(const char *cmdrest, int from_tty)
agent_expr_up gen_printf(CORE_ADDR scope, struct gdbarch *gdbarch, CORE_ADDR function, LONGEST channel, const char *format, int fmtlen, int nargs, struct expression **exprs)
agent_expr_up gen_trace_for_return_address(CORE_ADDR scope, struct gdbarch *gdbarch, int trace_string)
static void gen_extend(struct agent_expr *, struct type *)
agent_expr_up gen_trace_for_var(CORE_ADDR scope, struct gdbarch *gdbarch, struct symbol *var, int trace_string)
static int gen_struct_elt_for_reference(struct agent_expr *ax, struct axs_value *value, struct type *type, const char *fieldname)
static void gen_ptrdiff(struct agent_expr *ax, struct axs_value *value, struct axs_value *value1, struct axs_value *value2, struct type *result_type)
static void gen_conversion(struct agent_expr *ax, struct type *from, struct type *to)
static int is_nontrivial_conversion(struct type *from, struct type *to)
static void gen_frame_args_address(struct agent_expr *)
void ax_reqs(struct agent_expr *ax)
void ax_label(struct agent_expr *x, int patch, int target)
void ax_zero_ext(struct agent_expr *x, int n)
void ax_print(struct ui_file *f, struct agent_expr *x)
void ax_string(struct agent_expr *x, const char *str, int slen)
void ax_reg_mask(struct agent_expr *ax, int reg)
void ax_simple(struct agent_expr *x, enum agent_op op)
void ax_raw_byte(struct agent_expr *x, gdb_byte byte)
void ax_const_l(struct agent_expr *x, LONGEST l)
void ax_ext(struct agent_expr *x, int n)
void ax_tsv(struct agent_expr *x, enum agent_op op, int num)
int ax_goto(struct agent_expr *x, enum agent_op op)
void ax_reg(struct agent_expr *x, int reg)
void ax_trace_quick(struct agent_expr *x, int n)
std::unique_ptr< agent_expr > agent_expr_up
const struct block * block_for_pc(CORE_ADDR pc)
struct symbol * block_linkage_function(const struct block *bl)
int c_textual_element_type(struct type *, char)
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
internalvar * get_internalvar() const
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
bool constant_p() const override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
virtual void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type)
virtual bool constant_p() const
void generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type=nullptr)
virtual value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside)=0
virtual enum exp_opcode opcode() const =0
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
std::tuple< Arg... > m_storage
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
void error_no_arg(const char *why)
struct cmd_list_element * maintenancelist
struct cmd_list_element * add_cmd(const char *name, enum command_class theclass, const char *doc, struct cmd_list_element **list)
int check_for_argument(const char **str, const char *arg, int arg_len)
struct block_symbol cp_lookup_symbol_namespace(const char *scope, const char *name, const struct block *block, const domain_enum domain)
std::unique_ptr< expression > expression_up
expression_up parse_exp_1(const char **, CORE_ADDR pc, const struct block *, int, innermost_block_tracker *=nullptr)
@ EVAL_AVOID_SIDE_EFFECTS
CORE_ADDR get_frame_pc(frame_info_ptr frame)
frame_info_ptr get_current_frame(void)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
void gdbarch_virtual_frame_pointer(struct gdbarch *gdbarch, CORE_ADDR pc, int *frame_regnum, LONGEST *frame_offset)
void gdbarch_gen_return_address(struct gdbarch *gdbarch, struct agent_expr *ax, struct axs_value *value, CORE_ADDR scope)
static int gdbarch_num_cooked_regs(gdbarch *arch)
struct type * lookup_pointer_type(struct type *type)
int is_integral_type(struct type *t)
int field_is_static(struct field *f)
int is_scalar_type(struct type *type)
struct type * lookup_array_range_type(struct type *element_type, LONGEST low_bound, LONGEST high_bound)
struct type * check_typedef(struct type *type)
@ FIELD_LOC_KIND_PHYSADDR
#define TYPE_BASECLASS(thistype, index)
#define TYPE_BASECLASS_BITPOS(thistype, index)
#define TYPE_FIELD_BITSIZE(thistype, n)
#define TYPE_FIELD_PACKED(thistype, n)
#define TYPE_N_BASECLASSES(thistype)
const struct language_defn * language_def(enum language lang)
void decode_line_full(struct location_spec *locspec, int flags, struct program_space *search_pspace, struct symtab *default_symtab, int default_line, struct linespec_result *canonical, const char *select_mode, const char *filter)
@ DECODE_LINE_FUNFIRSTLINE
location_spec_up new_linespec_location_spec(const char **linespec, symbol_name_match_type match_type)
std::unique_ptr< location_spec > location_spec_up
struct bound_minimal_symbol lookup_minimal_symbol(const char *name, const char *sfile, struct objfile *objf)
type * find_minsym_type_and_address(minimal_symbol *msymbol, objfile *objf, CORE_ADDR *address_p)
static const char * namespace_name(struct die_info *die, int *is_anonymous, struct dwarf2_cu *)
struct type * register_type(struct gdbarch *gdbarch, int regnum)
void(* func)(remote_target *remote, char *)
enum axs_lvalue_kind kind
CORE_ADDR entry_pc() const
CORE_ADDR value_address() const
struct minimal_symbol * minsym
struct type * builtin_long_long
struct type * builtin_long
struct type * builtin_data_ptr
struct type * builtin_int
struct type * builtin_unsigned_int
CORE_ADDR loc_physaddr() const
LONGEST loc_bitpos() const
const char * loc_physname() const
field_loc_kind loc_kind() const
const char * name() const
struct type * type() const
const char * print_name() const
const char * linkage_name() const
virtual const char * name_of_this() const
std::vector< linespec_sals > lsals
const block * value_block() const
address_class aclass() const
struct type * type() const
LONGEST value_longest() const
CORE_ADDR value_address() const
struct type * target_type() const
struct field & field(int idx) const
bool is_pointer_or_reference() const
const char * name() const
struct value::@195::@196 reg
std::vector< range > optimized_out
enum overlay_debugging_state overlay_debugging
struct block_symbol lookup_symbol(const char *name, const struct block *block, domain_enum domain, struct field_of_this_result *is_a_field_of_this)
struct block_symbol lookup_language_this(const struct language_defn *lang, const struct block *block)
#define SYMBOL_COMPUTED_OPS(symbol)
#define SYMBOL_REGISTER_OPS(symbol)
struct trace_state_variable * find_trace_state_variable(const char *name)
const char * decode_agent_options(const char *exp, int *trace_string)
void error_unknown_type(const char *sym_print_name)
int user_reg_map_name_to_regnum(struct gdbarch *gdbarch, const char *name, int len)
int binop_types_user_defined_p(enum exp_opcode op, struct type *type1, struct type *type2)
struct type * value_type(const struct value *value)
int compile_internalvar_to_ax(struct internalvar *var, struct agent_expr *expr, struct axs_value *value)
const char * internalvar_name(const struct internalvar *var)
LONGEST value_as_long(struct value *val)