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;
362 if (
type->
code () == TYPE_CODE_RANGE)
385 case TYPE_CODE_RVALUE_REF:
394 case 8 / TARGET_CHAR_BIT:
397 case 16 / TARGET_CHAR_BIT:
400 case 32 / TARGET_CHAR_BIT:
403 case 64 / TARGET_CHAR_BIT:
412 internal_error (_(
"gen_fetch: strange size"));
422 error (_(
"gen_fetch: Unsupported type code `%s'."),
439 else if (distance < 0)
456 LONGEST frame_offset;
459 ax->
scope, &frame_reg, &frame_offset);
471 LONGEST frame_offset;
474 ax->
scope, &frame_reg, &frame_offset);
544 internal_error (_(
"gen_var_ref: LOC_CONST_BYTES "
545 "symbols are not supported"));
576 error (_(
"Cannot compute value of typedef `%s'."),
610 error (_(
"Couldn't resolve symbol `%s'."), var->
print_name ());
619 gdb_assert_not_reached (
"LOC_COMPUTED variable missing a method");
628 error (_(
"Cannot find value of botched symbol `%s'."),
681 error (_(
"Value not scalar: cannot be an rvalue."));
743 case TYPE_CODE_ARRAY:
756 case TYPE_CODE_STRUCT:
757 case TYPE_CODE_UNION:
829 return !ax->buf.empty ();
846 if (type1->
code () == TYPE_CODE_INT
847 && type2->
code () == TYPE_CODE_INT)
911 case TYPE_CODE_RVALUE_REF:
916 case TYPE_CODE_ARRAY:
917 case TYPE_CODE_STRUCT:
918 case TYPE_CODE_UNION:
920 error (_(
"Invalid type cast: intended type must be scalar."));
943 error (_(
"Casts to requested type are not yet implemented."));
960 if (element->
length () != 1)
1004 struct type *result_type)
1012First argument of `-' is a pointer, but second argument is neither\n\
1013an integer nor a pointer of the same type."));
1024 struct type *result_type)
1030 aop_equal, aop_equal, 0,
"equal");
1038 struct type *result_type)
1044 aop_less_signed, aop_less_unsigned, 0,
"less than");
1059 int may_carry,
const char *
name)
1063 if ((type1->
code () != TYPE_CODE_INT)
1065 error (_(
"Invalid combination of types in %s."),
name);
1077 struct type *result_type)
1082 error (_(
"Invalid type of operand to `!'."));
1093 if (
type->
code () != TYPE_CODE_INT)
1094 error (_(
"Invalid type of operand to `~'."));
1111 internal_error (_(
"gen_deref: expected a pointer"));
1120 error (_(
"Attempt to dereference a generic pointer."));
1138 switch (
value->kind)
1141 error (_(
"Operand of `&' is an rvalue, which has no address."));
1144 error (_(
"Operand of `&' is in a register, and has no address."));
1159 struct type *
type,
int start,
int end)
1163 = {aop_ref8, aop_ref16, aop_ref32, aop_ref64};
1164 static int num_ops = (
sizeof (ops) /
sizeof (ops[0]));
1194 int bound_start = (start / TARGET_CHAR_BIT) * TARGET_CHAR_BIT;
1195 int bound_end = (((end + TARGET_CHAR_BIT - 1)
1213 if ((end - start) > ((1 << num_ops) * 8))
1214 internal_error (_(
"gen_bitfield_ref: bitfield too wide"));
1218 offset = bound_start;
1220 for (op = num_ops - 1; op >= 0; op--)
1223 int op_size = 8 << op;
1229 if (offset + op_size <= bound_end)
1232 int last_frag = (offset + op_size == bound_end);
1299 while (fragment_count-- > 1)
1317 int offset,
int fieldno,
struct type *
type)
1322 (offset * TARGET_CHAR_BIT
1324 (offset * TARGET_CHAR_BIT
1354 if (strcmp (
field, this_name) == 0)
1364 error (_(
"static field `%s' has been "
1365 "optimized out, cannot use"),
1374 if (this_name[0] ==
'\0')
1375 internal_error (_(
"find_field: anonymous unions not supported"));
1381 for (i = 0; i < nbases; i++)
1404 const char *
field,
const char *operator_name,
1405 const char *operand_name)
1421 if (
type->
code () != TYPE_CODE_STRUCT
1422 &&
type->
code () != TYPE_CODE_UNION)
1423 error (_(
"The left operand of `%s' is not a %s."),
1424 operator_name, operand_name);
1429 error (_(
"Structure does not live in memory."));
1435 error (_(
"Couldn't find member named `%s' in struct/union/class `%s'"),
1441 const struct type *curtype,
const char *
name);
1444 const struct type *curtype,
const char *
name);
1481 struct type *
type,
const char *fieldname)
1486 if (t->
code () != TYPE_CODE_STRUCT
1487 && t->
code () != TYPE_CODE_UNION)
1488 internal_error (_(
"non-aggregate type to gen_struct_elt_for_reference"));
1492 const char *t_field_name = t->
field (i).
name ();
1494 if (t_field_name && strcmp (t_field_name, fieldname) == 0)
1500 error (_(
"static field `%s' has been "
1501 "optimized out, cannot use"),
1506 error (_(
"pointers to bitfield members not allowed"));
1510 error (_(
"Cannot reference non-static field \"%s\""), fieldname);
1525 const struct type *curtype,
const char *
name)
1530 error (_(
"No symbol \"%s\" in namespace \"%s\"."),
1544 const struct type *curtype,
const char *
name)
1559 error (_(
"`%s' has been optimized out, cannot use"),
1572 case TYPE_CODE_STRUCT:
1573 case TYPE_CODE_UNION:
1576 case TYPE_CODE_NAMESPACE:
1580 internal_error (_(
"non-aggregate type in gen_aggregate_elt_ref"));
1595 struct type *cast_type)
1607 if (cast_type !=
nullptr)
1616 struct type *cast_type)
1622 error (_(
"There is no field named %s"),
name.c_str ());
1629 struct type *cast_type)
1639 struct type *cast_type)
1646 if (cast_type ==
nullptr)
1656 struct type *cast_type)
1659 int len = std::get<0> (
m_storage).size ();
1664 internal_error (_(
"Register $%s not available"),
name);
1667 error (_(
"'%s' is a user-register; "
1668 "GDB cannot yet trace user-register contents."),
1679 struct type *cast_type)
1696 error (_(
"$%s is not a trace state variable; GDB agent "
1697 "expressions cannot use convenience variables."),
name);
1704 struct type *cast_type)
1706 struct axs_value value1, value2, value3;
1709 std::get<0> (
m_storage)->generate_ax (exp, ax, &value1);
1716 if1 =
ax_goto (ax, aop_if_goto);
1717 std::get<1> (
m_storage)->generate_ax (exp, ax, &value2);
1721 std::get<2> (
m_storage)->generate_ax (exp, ax, &value3);
1744 struct type *cast_type)
1750 std::get<0> (
m_storage)->generate_ax (exp, ax, &value1);
1752 error (_(
"Left operand of `@' must be an object in memory."));
1756 error (_(
"Right operand of `@' must be a "
1757 "constant, in agent expressions."));
1760 = std::get<1> (
m_storage)->evaluate (
nullptr, exp,
1762 if (v->
type ()->
code () != TYPE_CODE_INT)
1763 error (_(
"Right operand of `@' must be an integer."));
1766 error (_(
"Right operand of `@' must be positive."));
1783 struct type *cast_type)
1792 std::get<0> (
m_storage)->generate_ax (exp, ax, &value1);
1805 struct type *cast_type)
1812 int start = ax->
buf.size ();
1817 ax->
buf.resize (start);
1828 struct type *cast_type)
1838 struct type *cast_type)
1845 error (_(
"can't generate agent expression to extract non-scalar type"));
1857 struct type *cast_type)
1874 struct type *cast_type)
1877 = std::get<0> (
m_storage)->evaluate (
nullptr, exp,
1897 struct type *cast_type)
1900 const struct block *b;
1914 error (_(
"`%s' has been optimized out, cannot use"),
1922 struct type *cast_type)
1925 if (subop->
opcode () != OP_INTERNALVAR)
1926 error (_(
"May only assign to trace state variables"));
1929 = gdb::checked_static_cast<internalvar_operation *> (subop);
1943 error (_(
"$%s is not a trace state variable, "
1944 "may not assign to it"),
name);
1951 struct type *cast_type)
1954 if (subop->
opcode () != OP_INTERNALVAR)
1955 error (_(
"May only assign to trace state variables"));
1958 = gdb::checked_static_cast<internalvar_operation *> (subop);
1975 std::get<2> (
m_storage)->generate_ax (exp, ax, &value2);
1977 value, &value1, &value2);
1984 error (_(
"$%s is not a trace state variable, "
1985 "may not assign to it"),
name);
1992 struct type *cast_type)
1995 = std::get<0> (
m_storage)->evaluate (
nullptr, exp,
2004 struct type *cast_type)
2009 error (_(
"`%s' has been optimized out, cannot use"),
2014 if (cast_type ==
nullptr)
2024 struct type *cast_type)
2027 int if1, go1, if2, go2, end;
2030 std::get<0> (
m_storage)->generate_ax (exp, ax, &value1);
2032 if1 =
ax_goto (ax, aop_if_goto);
2035 std::get<1> (
m_storage)->generate_ax (exp, ax, &value2);
2037 if2 =
ax_goto (ax, aop_if_goto);
2054 struct type *cast_type)
2060 std::get<0> (
m_storage)->generate_ax (exp, ax, &value1);
2062 if1 =
ax_goto (ax, aop_if_goto);
2063 std::get<1> (
m_storage)->generate_ax (exp, ax, &value2);
2065 if2 =
ax_goto (ax, aop_if_goto);
2107 aop_add, aop_add, 1,
"addition");
2120 aop_sub, aop_sub, 1,
"subtraction");
2124 aop_mul, aop_mul, 1,
"multiplication");
2128 aop_div_signed, aop_div_unsigned, 1,
"division");
2132 aop_rem_signed, aop_rem_unsigned, 1,
"remainder");
2136 aop_lsh, aop_lsh, 1,
"left shift");
2140 aop_rsh_signed, aop_rsh_unsigned, 1,
"right shift");
2142 case BINOP_SUBSCRIPT:
2148 error (_(
"cannot subscript requested type: "
2149 "cannot call user defined functions"));
2157 if (
type->
code () != TYPE_CODE_ARRAY
2161 error (_(
"cannot subscript something of type `%s'"),
2164 error (_(
"cannot subscript requested type"));
2169 error (_(
"Argument to arithmetic operation "
2170 "not a number or boolean."));
2176 case BINOP_BITWISE_AND:
2178 aop_bit_and, aop_bit_and, 0,
"bitwise and");
2181 case BINOP_BITWISE_IOR:
2183 aop_bit_or, aop_bit_or, 0,
"bitwise or");
2186 case BINOP_BITWISE_XOR:
2188 aop_bit_xor, aop_bit_xor, 0,
"bitwise exclusive-or");
2195 case BINOP_NOTEQUAL:
2223 internal_error (_(
"gen_expr: op case sets don't match"));
2254 if (op == STRUCTOP_STRUCT)
2256 else if (op == STRUCTOP_PTR)
2258 "pointer to a structure or union");
2262 internal_error (_(
"gen_expr: unhandled struct case"));
2284 gen_binop (ax,
value, &value1, &value2, aop_sub, aop_sub, 1,
"negation");
2293 case UNOP_LOGICAL_NOT:
2299 case UNOP_COMPLEMENT:
2310 error (_(
"Argument of unary `*' is not a pointer."));
2320 gdb_assert_not_reached (
"invalid case in gen_expr_unop");
2333 struct symbol *var,
int trace_string)
2339 ax->trace_string = trace_string;
2372 ax->trace_string = trace_string;
2398 ax->tracing =
false;
2418 ax->trace_string = trace_string;
2437 CORE_ADDR function, LONGEST channel,
2438 const char *format,
int fmtlen,
2446 ax->tracing =
false;
2450 for (tem = nargs - 1; tem >= 0; --tem)
2453 exprs[tem]->
op->generate_ax (exprs[tem], ax.get (), &
value);
2476 int trace_string = 0;
2487 if (!eval && strcmp (arg,
"$_ret") == 0)
2498 gdb_assert (trace_string == 0);
2522 error (_(
"GDB can't do agent expression translation with overlays."));
2534 NULL, 0, &canonical,
2536 exp = skip_spaces (exp);
2540 exp = skip_spaces (exp);
2542 for (
const auto &lsal : canonical.
lsals)
2543 for (
const auto &sal : lsal.sals)
2575 const char *format_start, *format_end;
2582 error (_(
"GDB can't do agent expression translation with overlays."));
2587 cmdrest = skip_spaces (cmdrest);
2589 if (*cmdrest++ !=
'"')
2590 error (_(
"Must start with a format string."));
2592 format_start = cmdrest;
2594 format_pieces fpieces (&cmdrest);
2596 format_end = cmdrest;
2598 if (*cmdrest++ !=
'"')
2599 error (_(
"Bad format string, non-terminated '\"'."));
2601 cmdrest = skip_spaces (cmdrest);
2603 if (*cmdrest !=
',' && *cmdrest != 0)
2604 error (_(
"Invalid argument syntax"));
2606 if (*cmdrest ==
',')
2608 cmdrest = skip_spaces (cmdrest);
2610 std::vector<struct expression *> argvec;
2611 while (*cmdrest !=
'\0')
2618 argvec.push_back (
expr.release ());
2620 if (*cmdrest ==
',')
2628 format_start, format_end - format_start,
2629 argvec.size (), argvec.data ());
2647Translate an expression into remote agent bytecode for tracing.\n\
2648Usage: maint agent [-at LOCATION,] EXPRESSION\n\
2649If -at is given, generate remote agent bytecode for this location.\n\
2650If not, generate remote agent bytecode for current frame pc address."),
2655Translate an expression into remote agent bytecode for evaluation.\n\
2656Usage: maint agent-eval [-at LOCATION,] EXPRESSION\n\
2657If -at is given, generate remote agent bytecode for this location.\n\
2658If not, generate remote agent bytecode for current frame pc address."),
2662 _(
"Translate an expression into remote "
2663 "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 *)
static struct type * strip_range_type(struct type *type)
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)
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
LONGEST as_longest() const
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
@ PARSER_COMMA_TERMINATES
expression_up parse_exp_1(const char **, CORE_ADDR pc, const struct block *, parser_flags flags, 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 is_scalar_type(struct type *type)
struct type * lookup_array_range_type(struct type *element_type, LONGEST low_bound, LONGEST high_bound)
const struct builtin_type * builtin_type(struct gdbarch *gdbarch)
struct type * check_typedef(struct type *type)
@ FIELD_LOC_KIND_PHYSADDR
#define TYPE_BASECLASS(thistype, index)
#define TYPE_BASECLASS_BITPOS(thistype, index)
#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, struct objfile *objfile, 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
struct symbol * linkage_function() 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
unsigned int bitsize() 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
unsigned int num_fields() const
bool is_pointer_or_reference() const
const char * name() const
struct type * type() const
struct value::@203::@204 reg
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)
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)