/* Implement the 'ax_pseudo_register_collect' gdbarch method. */
-static int
+static void
amd64_ax_pseudo_register_collect (struct gdbarch *gdbarch,
struct agent_expr *ax, int regnum)
{
ax_reg_mask (ax, gpnum - AMD64_NUM_LOWER_BYTE_REGS);
else
ax_reg_mask (ax, gpnum);
- return 0;
}
else if (i386_dword_regnum_p (gdbarch, regnum))
{
int gpnum = regnum - tdep->eax_regnum;
ax_reg_mask (ax, gpnum);
- return 0;
}
else
- return i386_ax_pseudo_register_collect (gdbarch, ax, regnum);
+ i386_ax_pseudo_register_collect (gdbarch, ax, regnum);
}
\f
error (_("'%s' is a pseudo-register; "
"GDB cannot yet trace its contents."),
user_reg_map_regnum_to_name (ax->gdbarch, reg));
- if (gdbarch_ax_pseudo_register_collect (ax->gdbarch, ax, reg))
- error (_("Trace '%s' failed."),
- user_reg_map_regnum_to_name (ax->gdbarch, reg));
+
+ gdbarch_ax_pseudo_register_collect (ax->gdbarch, ax, reg);
}
else
{
return gdbarch->ax_pseudo_register_collect != NULL;
}
-int
+void
gdbarch_ax_pseudo_register_collect (struct gdbarch *gdbarch, struct agent_expr *ax, int reg)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->ax_pseudo_register_collect != NULL);
if (gdbarch_debug >= 2)
gdb_printf (gdb_stdlog, "gdbarch_ax_pseudo_register_collect called\n");
- return gdbarch->ax_pseudo_register_collect (gdbarch, ax, reg);
+ gdbarch->ax_pseudo_register_collect (gdbarch, ax, reg);
}
void
extern void set_gdbarch_num_pseudo_regs (struct gdbarch *gdbarch, int num_pseudo_regs);
/* Assemble agent expression bytecode to collect pseudo-register REG.
- Return -1 if something goes wrong, 0 otherwise. */
+ REG must be a valid register number. */
extern bool gdbarch_ax_pseudo_register_collect_p (struct gdbarch *gdbarch);
-typedef int (gdbarch_ax_pseudo_register_collect_ftype) (struct gdbarch *gdbarch, struct agent_expr *ax, int reg);
-extern int gdbarch_ax_pseudo_register_collect (struct gdbarch *gdbarch, struct agent_expr *ax, int reg);
+typedef void (gdbarch_ax_pseudo_register_collect_ftype) (struct gdbarch *gdbarch, struct agent_expr *ax, int reg);
+extern void gdbarch_ax_pseudo_register_collect (struct gdbarch *gdbarch, struct agent_expr *ax, int reg);
extern void set_gdbarch_ax_pseudo_register_collect (struct gdbarch *gdbarch, gdbarch_ax_pseudo_register_collect_ftype *ax_pseudo_register_collect);
/* Assemble agent expression bytecode to push the value of pseudo-register
Method(
comment="""
Assemble agent expression bytecode to collect pseudo-register REG.
-Return -1 if something goes wrong, 0 otherwise.
+REG must be a valid register number.
""",
- type="int",
+ type="void",
name="ax_pseudo_register_collect",
params=[("struct agent_expr *", "ax"), ("int", "reg")],
predicate=True,
/* Implement the 'ax_pseudo_register_collect' gdbarch method. */
-int
+void
i386_ax_pseudo_register_collect (struct gdbarch *gdbarch,
struct agent_expr *ax, int regnum)
{
ax_reg_mask (ax, I387_FSTAT_REGNUM (tdep));
for (i = 0; i < 8; i++)
ax_reg_mask (ax, I387_ST0_REGNUM (tdep) + i);
- return 0;
}
else if (i386_zmm_regnum_p (gdbarch, regnum))
{
- num_lower_zmm_regs);
}
ax_reg_mask (ax, tdep->zmm0h_regnum + regnum);
- return 0;
}
else if (i386_ymm_regnum_p (gdbarch, regnum))
{
regnum -= tdep->ymm0_regnum;
ax_reg_mask (ax, I387_XMM0_REGNUM (tdep) + regnum);
ax_reg_mask (ax, tdep->ymm0h_regnum + regnum);
- return 0;
}
else if (i386_ymm_avx512_regnum_p (gdbarch, regnum))
{
regnum -= tdep->ymm16_regnum;
ax_reg_mask (ax, I387_XMM16_REGNUM (tdep) + regnum);
ax_reg_mask (ax, tdep->ymm16h_regnum + regnum);
- return 0;
}
else if (i386_word_regnum_p (gdbarch, regnum))
{
int gpnum = regnum - tdep->ax_regnum;
ax_reg_mask (ax, gpnum);
- return 0;
}
else if (i386_byte_regnum_p (gdbarch, regnum))
{
int gpnum = regnum - tdep->al_regnum;
ax_reg_mask (ax, gpnum % 4);
- return 0;
}
else
- internal_error (_("invalid regnum"));
- return 1;
+ gdb_assert_not_reached ("invalid regnum");
}
\f
const frame_info_ptr &next_frame, int regnum,
gdb::array_view<const gdb_byte> buf);
-extern int i386_ax_pseudo_register_collect (struct gdbarch *gdbarch,
- struct agent_expr *ax,
- int regnum);
+extern void i386_ax_pseudo_register_collect (struct gdbarch *gdbarch,
+ struct agent_expr *ax,
+ int regnum);
/* Segment selectors. */
#define I386_SEL_RPL 0x0003 /* Requester's Privilege Level mask. */
internal_error (_("bad register size"));
}
-static int
+static void
mips_ax_pseudo_register_collect (struct gdbarch *gdbarch,
struct agent_expr *ax, int reg)
{
&& reg < 2 * gdbarch_num_regs (gdbarch));
ax_reg_mask (ax, rawnum);
-
- return 0;
}
static int
ax_reg_mask (ax, vr0 + reg_index);
}
-static int
+static void
rs6000_ax_pseudo_register_collect (struct gdbarch *gdbarch,
struct agent_expr *ax, int reg_nr)
{
efp_ax_pseudo_register_collect (gdbarch, ax, reg_nr);
}
else
- internal_error (_("rs6000_pseudo_register_collect: "
- "called on unexpected register '%s' (%d)"),
- gdbarch_register_name (gdbarch, reg_nr), reg_nr);
- return 0;
+ gdb_assert_not_reached ("rs6000_pseudo_register_collect: "
+ "called on unexpected register '%s' (%d)",
+ gdbarch_register_name (gdbarch, reg_nr), reg_nr);
}
/* The "ax_pseudo_register_collect" gdbarch method. */
-static int
+static void
s390_ax_pseudo_register_collect (struct gdbarch *gdbarch,
struct agent_expr *ax, int regnum)
{
ax_reg_mask (ax, S390_V0_LOWER_REGNUM + regnum);
}
else
- {
- internal_error (_("invalid regnum"));
- }
- return 0;
+ gdb_assert_not_reached ("invalid regnum");
}
/* The "ax_pseudo_register_push_stack" gdbarch method. */