diff --git a/gdb/ax-general.c b/gdb/ax-general.c index 05ca556703e..0c767c1c0df 100644 --- a/gdb/ax-general.c +++ b/gdb/ax-general.c @@ -232,7 +232,8 @@ ax_reg (struct agent_expr *x, int reg) error (_("'%s' is a pseudo-register; " "GDB cannot yet trace its contents."), user_reg_map_regnum_to_name (x->gdbarch, reg)); - if (gdbarch_ax_pseudo_register_push_stack (x->gdbarch, x, reg)) + + if (!gdbarch_ax_pseudo_register_push_stack (x->gdbarch, x, reg)) error (_("Trace '%s' failed."), user_reg_map_regnum_to_name (x->gdbarch, reg)); } diff --git a/gdb/gdbarch-gen.c b/gdb/gdbarch-gen.c index c4da3fa4c29..e622e812de5 100644 --- a/gdb/gdbarch-gen.c +++ b/gdb/gdbarch-gen.c @@ -1974,7 +1974,7 @@ gdbarch_ax_pseudo_register_push_stack_p (struct gdbarch *gdbarch) return gdbarch->ax_pseudo_register_push_stack != NULL; } -int +bool gdbarch_ax_pseudo_register_push_stack (struct gdbarch *gdbarch, struct agent_expr *ax, int reg) { gdb_assert (gdbarch != NULL); diff --git a/gdb/gdbarch-gen.h b/gdb/gdbarch-gen.h index 13e9b94a8ff..b0534c3e6ab 100644 --- a/gdb/gdbarch-gen.h +++ b/gdb/gdbarch-gen.h @@ -246,12 +246,13 @@ extern void set_gdbarch_ax_pseudo_register_collect (struct gdbarch *gdbarch, gdb /* Assemble agent expression bytecode to push the value of pseudo-register REG on the interpreter stack. - Return -1 if something goes wrong, 0 otherwise. */ + REG must be a valid register number. + Return false if something goes wrong, true otherwise. */ extern bool gdbarch_ax_pseudo_register_push_stack_p (struct gdbarch *gdbarch); -typedef int (gdbarch_ax_pseudo_register_push_stack_ftype) (struct gdbarch *gdbarch, struct agent_expr *ax, int reg); -extern int gdbarch_ax_pseudo_register_push_stack (struct gdbarch *gdbarch, struct agent_expr *ax, int reg); +typedef bool (gdbarch_ax_pseudo_register_push_stack_ftype) (struct gdbarch *gdbarch, struct agent_expr *ax, int reg); +extern bool gdbarch_ax_pseudo_register_push_stack (struct gdbarch *gdbarch, struct agent_expr *ax, int reg); extern void set_gdbarch_ax_pseudo_register_push_stack (struct gdbarch *gdbarch, gdbarch_ax_pseudo_register_push_stack_ftype *ax_pseudo_register_push_stack); /* Some architectures can display additional information for specific diff --git a/gdb/gdbarch_components.py b/gdb/gdbarch_components.py index 4c51dc3d04c..3dead483934 100644 --- a/gdb/gdbarch_components.py +++ b/gdb/gdbarch_components.py @@ -498,9 +498,10 @@ Method( comment=""" Assemble agent expression bytecode to push the value of pseudo-register REG on the interpreter stack. -Return -1 if something goes wrong, 0 otherwise. +REG must be a valid register number. +Return false if something goes wrong, true otherwise. """, - type="int", + type="bool", name="ax_pseudo_register_push_stack", params=[("struct agent_expr *", "ax"), ("int", "reg")], predicate=True, diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c index 0babb8b9b98..82fa67e7055 100644 --- a/gdb/mips-tdep.c +++ b/gdb/mips-tdep.c @@ -841,7 +841,7 @@ mips_ax_pseudo_register_collect (struct gdbarch *gdbarch, ax_reg_mask (ax, rawnum); } -static int +static bool mips_ax_pseudo_register_push_stack (struct gdbarch *gdbarch, struct agent_expr *ax, int reg) { @@ -870,7 +870,7 @@ mips_ax_pseudo_register_push_stack (struct gdbarch *gdbarch, else internal_error (_("bad register size")); - return 0; + return true; } /* Table to translate 3-bit register field to actual register number. */ diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c index 8a3bde525e9..ab00b65d640 100644 --- a/gdb/s390-tdep.c +++ b/gdb/s390-tdep.c @@ -1536,7 +1536,7 @@ s390_ax_pseudo_register_collect (struct gdbarch *gdbarch, /* The "ax_pseudo_register_push_stack" gdbarch method. */ -static int +static bool s390_ax_pseudo_register_push_stack (struct gdbarch *gdbarch, struct agent_expr *ax, int regnum) { @@ -1571,13 +1571,13 @@ s390_ax_pseudo_register_push_stack (struct gdbarch *gdbarch, else if (regnum_is_vxr_full (tdep, regnum)) { /* Too large to stuff on the stack. */ - return 1; + return false; } else { internal_error (_("invalid regnum")); } - return 0; + return true; } /* The "gen_return_address" gdbarch method. Since this is supposed to be