diff options
author | Simon Marchi <simon.marchi@ericsson.com> | 2018-10-21 22:29:21 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@polymtl.ca> | 2018-10-21 22:29:21 -0400 |
commit | f6efe3f842e72e23ec6d8a57d683ce90d2e89785 (patch) | |
tree | a0d6e232cc7bff7ef9ce51c34afc865032d8414f /gdb/user-regs.c | |
parent | 925047fed0d6ab86e6fe86d3e22e1aa9dde7b3eb (diff) | |
download | gdb-f6efe3f842e72e23ec6d8a57d683ce90d2e89785.zip gdb-f6efe3f842e72e23ec6d8a57d683ce90d2e89785.tar.gz gdb-f6efe3f842e72e23ec6d8a57d683ce90d2e89785.tar.bz2 |
Introduce gdbarch_num_cooked_regs
The expression
gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch)
is used quite often to find the number of cooked registers (raw + pseudo
registers). This patch introduces gdbarch_num_cooked_regs, which does
the equivalent. It substantially reduces required wrapping in some
places, so should improve readability.
There is a for loop in m68hc11_frame_unwind_cache that had iterated
until (the equivalent of) gdbarch_num_cooked_regs (gdbarch) - 1. During
review, we concluded that this is most likely an off-by-one mistake, so
I replaced it with gdbarch_num_cooked_regs (gdbarch).
gdb/ChangeLog:
* gdbarch.sh (gdbarch_num_cooked_regs): New.
* gdbarch.h: Re-generate.
* ax-gdb.c (gen_expr): Use gdbarch_num_cooked_regs.
* dwarf2-frame.c (dwarf2_frame_cache): Likewise.
* eval.c (evaluate_subexp_standard): Likewise.
* findvar.c (value_of_register): Likewise.
(value_of_register_lazy): Likewise.
(address_from_register): Likewise.
* frame.c (get_frame_register_bytes): Likewise.
* gdbarch-selftests.c (register_to_value_test): Likewise.
* h8300-tdep.c (h8300_register_type): Likewise.
* i386-tdep.c (i386_dbx_reg_to_regnum): Likewise.
(i386_svr4_reg_to_regnum): Likewise.
* infcmd.c (default_print_registers_info): Likewise.
(registers_info): Likewise.
(print_vector_info): Likewise.
(default_print_float_info): Likewise.
* m68hc11-tdep.c (m68hc11_frame_unwind_cache): Likewise.
* mdebugread.c (mdebug_reg_to_regnum): Likewise.
* mi/mi-main.c (mi_cmd_data_list_register_names): Likewise.
(mi_cmd_data_list_changed_registers): Likewise.
(mi_cmd_data_list_register_values): Likewise.
(mi_cmd_data_write_register_values): Likewise.
(mi_cmd_trace_frame_collected): Likewise.
* mips-tdep.c (print_gp_register_row): Likewise.
(mips_print_registers_info): Likewise.
* nds32-tdep.c (nds32_gdbarch_init): Likewise.
* regcache.c (init_regcache_descr): Likewise.
(register_size): Likewise.
(register_dump::dump): Likewise.
(cooked_read_test): Likewise.
(cooked_write_test): Likewise.
* rs6000-tdep.c (rs6000_register_sim_regno): Likewise.
(rs6000_gdbarch_init): Likewise.
* stabsread.c (stab_reg_to_regnum): Likewise.
* stack.c (info_frame_command): Likewise.
* target-descriptions.c (tdesc_register_name): Likewise.
* trad-frame.c (trad_frame_alloc_saved_regs): Likewise.
* tui/tui-regs.c (tui_show_register_group): Likewise.
* user-regs.c (user_reg_map_name_to_regnum): Likewise.
(user_reg_map_regnum_to_name): Likewise.
(value_of_user_reg): Likewise.
(maintenance_print_user_registers): Likewise.
* xtensa-tdep.c (xtensa_find_register_by_name): Likewise.
(xtensa_register_name): Likewise.
(xtensa_register_type): Likewise.
(xtensa_reg_to_regnum): Likewise.
(xtensa_pseudo_register_read): Likewise.
(xtensa_pseudo_register_write): Likewise.
Diffstat (limited to 'gdb/user-regs.c')
-rw-r--r-- | gdb/user-regs.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/gdb/user-regs.c b/gdb/user-regs.c index 4dd67a6..c9e8c0d 100644 --- a/gdb/user-regs.c +++ b/gdb/user-regs.c @@ -138,8 +138,7 @@ user_reg_map_name_to_regnum (struct gdbarch *gdbarch, const char *name, specific register override the user registers. */ { int i; - int maxregs = (gdbarch_num_regs (gdbarch) - + gdbarch_num_pseudo_regs (gdbarch)); + int maxregs = gdbarch_num_cooked_regs (gdbarch); for (i = 0; i < maxregs; i++) { @@ -165,8 +164,7 @@ user_reg_map_name_to_regnum (struct gdbarch *gdbarch, const char *name, if ((len < 0 && strcmp (reg->name, name)) || (len == strlen (reg->name) && strncmp (reg->name, name, len) == 0)) - return gdbarch_num_regs (gdbarch) - + gdbarch_num_pseudo_regs (gdbarch) + nr; + return gdbarch_num_cooked_regs (gdbarch) + nr; } } @@ -192,8 +190,7 @@ usernum_to_user_reg (struct gdbarch *gdbarch, int usernum) const char * user_reg_map_regnum_to_name (struct gdbarch *gdbarch, int regnum) { - int maxregs = (gdbarch_num_regs (gdbarch) - + gdbarch_num_pseudo_regs (gdbarch)); + int maxregs = gdbarch_num_cooked_regs (gdbarch); if (regnum < 0) return NULL; @@ -213,8 +210,7 @@ struct value * value_of_user_reg (int regnum, struct frame_info *frame) { struct gdbarch *gdbarch = get_frame_arch (frame); - int maxregs = (gdbarch_num_regs (gdbarch) - + gdbarch_num_pseudo_regs (gdbarch)); + int maxregs = gdbarch_num_cooked_regs (gdbarch); struct user_reg *reg = usernum_to_user_reg (gdbarch, regnum - maxregs); gdb_assert (reg != NULL); @@ -230,7 +226,7 @@ maintenance_print_user_registers (const char *args, int from_tty) int regnum; regs = (struct gdb_user_regs *) gdbarch_data (gdbarch, user_regs_data); - regnum = gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch); + regnum = gdbarch_num_cooked_regs (gdbarch); fprintf_unfiltered (gdb_stdout, " %-11s %3s\n", "Name", "Nr"); for (reg = regs->first; reg != NULL; reg = reg->next, ++regnum) |