Introduce gdbarch_num_cooked_regs
authorSimon Marchi <simon.marchi@ericsson.com>
Mon, 22 Oct 2018 02:29:21 +0000 (22:29 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Mon, 22 Oct 2018 02:29:21 +0000 (22:29 -0400)
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.

26 files changed:
gdb/ChangeLog
gdb/ax-gdb.c
gdb/dwarf2-frame.c
gdb/eval.c
gdb/findvar.c
gdb/frame.c
gdb/gdbarch-selftests.c
gdb/gdbarch.h
gdb/gdbarch.sh
gdb/h8300-tdep.c
gdb/i386-tdep.c
gdb/infcmd.c
gdb/m68hc11-tdep.c
gdb/mdebugread.c
gdb/mi/mi-main.c
gdb/mips-tdep.c
gdb/nds32-tdep.c
gdb/regcache.c
gdb/rs6000-tdep.c
gdb/stabsread.c
gdb/stack.c
gdb/target-descriptions.c
gdb/trad-frame.c
gdb/tui/tui-regs.c
gdb/user-regs.c
gdb/xtensa-tdep.c

index 190d7606e40e390c71b723317ea8fdfd263ca39e..0e9b0a1a5f198a3a98764acf3b8b00b05ae9fc05 100644 (file)
@@ -1,3 +1,55 @@
+2018-10-21  Simon Marchi  <simon.marchi@ericsson.com>
+
+       * 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.
+
 2018-10-21  Simon Marchi  <simon.marchi@polymtl.ca>
 
        * amd64-tdep.c (amd64_pseudo_register_read_value): Use
index 9abd939e235feedf45dd35954fca0b0d852e8dd3..ef053f75c610f47bedf6a0539f914ec77203d3e1 100644 (file)
@@ -2036,8 +2036,7 @@ gen_expr (struct expression *exp, union exp_element **pc,
          internal_error (__FILE__, __LINE__,
                          _("Register $%s not available"), name);
        /* No support for tracing user registers yet.  */
-       if (reg >= gdbarch_num_regs (ax->gdbarch)
-           + gdbarch_num_pseudo_regs (ax->gdbarch))
+       if (reg >= gdbarch_num_cooked_regs (ax->gdbarch))
          error (_("'%s' is a user-register; "
                   "GDB cannot yet trace user-register contents."),
                 name);
index 2d6116775eff25aad5b5e675089aab9f6fdec032..2201c636590da55d9871241c430995be700212f2 100644 (file)
@@ -972,8 +972,7 @@ static struct dwarf2_frame_cache *
 dwarf2_frame_cache (struct frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
-  const int num_regs = gdbarch_num_regs (gdbarch)
-                      + gdbarch_num_pseudo_regs (gdbarch);
+  const int num_regs = gdbarch_num_cooked_regs (gdbarch);
   struct dwarf2_frame_cache *cache;
   struct dwarf2_fde *fde;
   CORE_ADDR entry_pc;
index 5ee59908ba348990a52717d6318f804ea1fd7933..047aba59ae931fd79450043c6030c364b32d5aee 100644 (file)
@@ -1395,8 +1395,7 @@ evaluate_subexp_standard (struct type *expect_type,
            So for these registers, we fetch the register value regardless
            of the evaluation mode.  */
        if (noside == EVAL_AVOID_SIDE_EFFECTS
-           && regno < gdbarch_num_regs (exp->gdbarch)
-                       + gdbarch_num_pseudo_regs (exp->gdbarch))
+           && regno < gdbarch_num_cooked_regs (exp->gdbarch))
          val = value_zero (register_type (exp->gdbarch, regno), not_lval);
        else
          val = value_of_register (regno, get_selected_frame (NULL));
index 41ffedd330fa4415e9373ccba9bf644d2ac2740a..3169348ecc73743515ed934cebb956f819584b0d 100644 (file)
@@ -267,8 +267,7 @@ value_of_register (int regnum, struct frame_info *frame)
 
   /* User registers lie completely outside of the range of normal
      registers.  Catch them early so that the target never sees them.  */
-  if (regnum >= gdbarch_num_regs (gdbarch)
-               + gdbarch_num_pseudo_regs (gdbarch))
+  if (regnum >= gdbarch_num_cooked_regs (gdbarch))
     return value_of_user_reg (regnum, frame);
 
   reg_val = value_of_register_lazy (frame, regnum);
@@ -287,8 +286,7 @@ value_of_register_lazy (struct frame_info *frame, int regnum)
   struct value *reg_val;
   struct frame_info *next_frame;
 
-  gdb_assert (regnum < (gdbarch_num_regs (gdbarch)
-                       + gdbarch_num_pseudo_regs (gdbarch)));
+  gdb_assert (regnum < gdbarch_num_cooked_regs (gdbarch));
 
   gdb_assert (frame != NULL);
 
@@ -957,8 +955,7 @@ address_from_register (int regnum, struct frame_info *frame)
   struct type *type = builtin_type (gdbarch)->builtin_data_ptr;
   struct value *value;
   CORE_ADDR result;
-  int regnum_max_excl = (gdbarch_num_regs (gdbarch)
-                        + gdbarch_num_pseudo_regs (gdbarch));
+  int regnum_max_excl = gdbarch_num_cooked_regs (gdbarch);
 
   if (regnum < 0 || regnum >= regnum_max_excl)
     error (_("Invalid register #%d, expecting 0 <= # < %d"), regnum,
index 0dc2cb7e7160189ad188f52121f49ac6b76c7e3e..4624eada87b2d761b0f97c8c84eb17f574fa78c7 100644 (file)
@@ -1416,7 +1416,7 @@ get_frame_register_bytes (struct frame_info *frame, int regnum,
   /* Ensure that we will not read beyond the end of the register file.
      This can only ever happen if the debug information is bad.  */
   maxsize = -offset;
-  numregs = gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
+  numregs = gdbarch_num_cooked_regs (gdbarch);
   for (i = regnum; i < numregs; i++)
     {
       int thissize = register_size (gdbarch, i);
index 73a31244b452275b781ba63c139c55161cb7396e..448605621d1bb05203ac6fed0b6f9eb242192f5d 100644 (file)
@@ -116,8 +116,7 @@ register_to_value_test (struct gdbarch *gdbarch)
     = make_scoped_restore (&inferior_ptid, mock_ptid);
 
   struct frame_info *frame = get_current_frame ();
-  const int num_regs = (gdbarch_num_regs (gdbarch)
-                       + gdbarch_num_pseudo_regs (gdbarch));
+  const int num_regs = gdbarch_num_cooked_regs (gdbarch);
 
   /* Test gdbarch methods register_to_value and value_to_register with
      different combinations of register numbers and types.  */
index fc2f1a84a1ca6ecf182862b7263b2100359e304d..2cb69610837d64f832f861f4611a2b7d6ae94506 100644 (file)
@@ -1806,4 +1806,12 @@ extern unsigned int gdbarch_debug;
 
 extern void gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file);
 
+/* Return the number of cooked registers (raw + pseudo) for ARCH.  */
+
+static inline int
+gdbarch_num_cooked_regs (gdbarch *arch)
+{
+  return gdbarch_num_regs (arch) + gdbarch_num_pseudo_regs (arch);
+}
+
 #endif
index 670ac30c030346592fe1f310669644281b49bc75..bbfa8d2205835d1ce283ebb0b1eef08a88a2183b 100755 (executable)
@@ -1632,6 +1632,14 @@ extern unsigned int gdbarch_debug;
 
 extern void gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file);
 
+/* Return the number of cooked registers (raw + pseudo) for ARCH.  */
+
+static inline int
+gdbarch_num_cooked_regs (gdbarch *arch)
+{
+  return gdbarch_num_regs (arch) + gdbarch_num_pseudo_regs (arch);
+}
+
 #endif
 EOF
 exec 1>&2
index 5a4802cfe59815f063c59c0b9d42f0e0c5fa4585..2334582260d3227f73f2f02bf25de206b9fa3d41 100644 (file)
@@ -1128,8 +1128,7 @@ h8300_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file,
 static struct type *
 h8300_register_type (struct gdbarch *gdbarch, int regno)
 {
-  if (regno < 0 || regno >= gdbarch_num_regs (gdbarch)
-                           + gdbarch_num_pseudo_regs (gdbarch))
+  if (regno < 0 || regno >= gdbarch_num_cooked_regs (gdbarch))
     internal_error (__FILE__, __LINE__,
                    _("h8300_register_type: illegal register number %d"),
                    regno);
index a6994aaf1266ba4e47c06f694dad2d320c3c758f..a34a3374a4d7ad8e9d597747a814a3a9f056de02 100644 (file)
@@ -518,7 +518,7 @@ i386_dbx_reg_to_regnum (struct gdbarch *gdbarch, int reg)
     }
 
   /* This will hopefully provoke a warning.  */
-  return gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
+  return gdbarch_num_cooked_regs (gdbarch);
 }
 
 /* Convert SVR4 DWARF register number REG to the appropriate register number
@@ -575,7 +575,7 @@ i386_svr4_reg_to_regnum (struct gdbarch *gdbarch, int reg)
   int regnum = i386_svr4_dwarf_reg_to_regnum (gdbarch, reg);
 
   if (regnum == -1)
-    return gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
+    return gdbarch_num_cooked_regs (gdbarch);
   return regnum;
 }
 
index da0cb340ac36a9e8da1fc355e78edb5c24e1c306..27177a475053a4814226ab5040ae66585a60f26b 100644 (file)
@@ -2387,8 +2387,7 @@ default_print_registers_info (struct gdbarch *gdbarch,
                              int regnum, int print_all)
 {
   int i;
-  const int numregs = gdbarch_num_regs (gdbarch)
-                     + gdbarch_num_pseudo_regs (gdbarch);
+  const int numregs = gdbarch_num_cooked_regs (gdbarch);
 
   for (i = 0; i < numregs; i++)
     {
@@ -2475,8 +2474,7 @@ registers_info (const char *addr_exp, int fpregs)
            /* User registers lie completely outside of the range of
               normal registers.  Catch them early so that the target
               never sees them.  */
-           if (regnum >= gdbarch_num_regs (gdbarch)
-                         + gdbarch_num_pseudo_regs (gdbarch))
+           if (regnum >= gdbarch_num_cooked_regs (gdbarch))
              {
                struct value *regval = value_of_user_reg (regnum, frame);
                const char *regname = user_reg_map_regnum_to_name (gdbarch,
@@ -2515,8 +2513,7 @@ registers_info (const char *addr_exp, int fpregs)
            int regnum;
 
            for (regnum = 0;
-                regnum < gdbarch_num_regs (gdbarch)
-                         + gdbarch_num_pseudo_regs (gdbarch);
+                regnum < gdbarch_num_cooked_regs (gdbarch);
                 regnum++)
              {
                if (gdbarch_register_reggroup_p (gdbarch, regnum, group))
@@ -2558,10 +2555,7 @@ print_vector_info (struct ui_file *file,
       int regnum;
       int printed_something = 0;
 
-      for (regnum = 0;
-          regnum < gdbarch_num_regs (gdbarch)
-                   + gdbarch_num_pseudo_regs (gdbarch);
-          regnum++)
+      for (regnum = 0; regnum < gdbarch_num_cooked_regs (gdbarch); regnum++)
        {
          if (gdbarch_register_reggroup_p (gdbarch, regnum, vector_reggroup))
            {
@@ -3110,10 +3104,7 @@ default_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
   int regnum;
   int printed_something = 0;
 
-  for (regnum = 0;
-       regnum < gdbarch_num_regs (gdbarch)
-        + gdbarch_num_pseudo_regs (gdbarch);
-       regnum++)
+  for (regnum = 0; regnum < gdbarch_num_cooked_regs (gdbarch); regnum++)
     {
       if (gdbarch_register_reggroup_p (gdbarch, regnum, float_reggroup))
        {
index 1490ee28668ae987f1a7a3936c766e16259fa02f..b6e8f00a0ba1b747574c4324be7c2d7f5dafc18c 100644 (file)
@@ -854,10 +854,7 @@ m68hc11_frame_unwind_cache (struct frame_info *this_frame,
 
   /* Adjust all the saved registers so that they contain addresses and not
      offsets.  */
-  for (i = 0;
-       i < gdbarch_num_regs (gdbarch)
-          + gdbarch_num_pseudo_regs (gdbarch) - 1;
-       i++)
+  for (i = 0; i < gdbarch_num_cooked_regs (gdbarch); i++)
     if (trad_frame_addr_p (info->saved_regs, i))
       {
         info->saved_regs[i].addr += this_base;
index 62de80ee1e6d73200d15ae97bdb00ba32a31b25c..26687f6c8dcba3c01ff972a01efbcf28ac9299ea 100644 (file)
@@ -537,13 +537,9 @@ mdebug_reg_to_regnum (struct symbol *sym, struct gdbarch *gdbarch)
 {
   int regno = gdbarch_ecoff_reg_to_regnum (gdbarch, SYMBOL_VALUE (sym));
 
-  if (regno < 0
-      || regno >= (gdbarch_num_regs (gdbarch)
-                  + gdbarch_num_pseudo_regs (gdbarch)))
+  if (regno < 0 || regno >= gdbarch_num_cooked_regs (gdbarch))
     {
-      reg_value_complaint (regno,
-                          gdbarch_num_regs (gdbarch)
-                            + gdbarch_num_pseudo_regs (gdbarch),
+      reg_value_complaint (regno, gdbarch_num_cooked_regs (gdbarch),
                           SYMBOL_PRINT_NAME (sym));
 
       regno = gdbarch_sp_regnum (gdbarch); /* Known safe, though useless.  */
index f6fbebcf792948f3a8d6783c341d42f959e1fc03..5562935102e154d8754d277b8c7802e1422f85e9 100644 (file)
@@ -890,7 +890,7 @@ mi_cmd_data_list_register_names (const char *command, char **argv, int argc)
      debugged.  */
 
   gdbarch = get_current_arch ();
-  numregs = gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
+  numregs = gdbarch_num_cooked_regs (gdbarch);
 
   ui_out_emit_list list_emitter (uiout, "register-names");
 
@@ -949,7 +949,7 @@ mi_cmd_data_list_changed_registers (const char *command, char **argv, int argc)
      debugged.  */
 
   gdbarch = this_regs->arch ();
-  numregs = gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
+  numregs = gdbarch_num_cooked_regs (gdbarch);
 
   ui_out_emit_list list_emitter (uiout, "changed-registers");
 
@@ -1076,7 +1076,7 @@ mi_cmd_data_list_register_values (const char *command, char **argv, int argc)
 
   frame = get_selected_frame (NULL);
   gdbarch = get_frame_arch (frame);
-  numregs = gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
+  numregs = gdbarch_num_cooked_regs (gdbarch);
 
   ui_out_emit_list list_emitter (uiout, "register-values");
 
@@ -1164,7 +1164,7 @@ mi_cmd_data_write_register_values (const char *command, char **argv, int argc)
 
   regcache = get_current_regcache ();
   gdbarch = regcache->arch ();
-  numregs = gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
+  numregs = gdbarch_num_cooked_regs (gdbarch);
 
   if (argc == 0)
     error (_("-data-write-register-values: Usage: -data-write-register-"
@@ -2638,7 +2638,7 @@ mi_cmd_trace_frame_collected (const char *command, char **argv, int argc)
 
     frame = get_selected_frame (NULL);
     gdbarch = get_frame_arch (frame);
-    numregs = gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
+    numregs = gdbarch_num_cooked_regs (gdbarch);
 
     for (regnum = 0; regnum < numregs; regnum++)
       {
index bf44c52f5d2ad73605cdfaabe1ac1d2bde822ef9..2c8726214f394cbdfed418fd7fce97fc54f21834 100644 (file)
@@ -6497,8 +6497,7 @@ print_gp_register_row (struct ui_file *file, struct frame_info *frame,
 
   /* For GP registers, we print a separate row of names above the vals.  */
   for (col = 0, regnum = start_regnum;
-       col < ncols && regnum < gdbarch_num_regs (gdbarch)
-                              + gdbarch_num_pseudo_regs (gdbarch);
+       col < ncols && regnum < gdbarch_num_cooked_regs (gdbarch);
        regnum++)
     {
       if (*gdbarch_register_name (gdbarch, regnum) == '\0')
@@ -6536,8 +6535,7 @@ print_gp_register_row (struct ui_file *file, struct frame_info *frame,
 
   /* Now print the values in hex, 4 or 8 to the row.  */
   for (col = 0, regnum = start_regnum;
-       col < ncols && regnum < gdbarch_num_regs (gdbarch)
-                              + gdbarch_num_pseudo_regs (gdbarch);
+       col < ncols && regnum < gdbarch_num_cooked_regs (gdbarch);
        regnum++)
     {
       if (*gdbarch_register_name (gdbarch, regnum) == '\0')
@@ -6603,8 +6601,7 @@ mips_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file,
     /* Do all (or most) registers.  */
     {
       regnum = gdbarch_num_regs (gdbarch);
-      while (regnum < gdbarch_num_regs (gdbarch)
-                     + gdbarch_num_pseudo_regs (gdbarch))
+      while (regnum < gdbarch_num_cooked_regs (gdbarch))
        {
          if (mips_float_register_p (gdbarch, regnum))
            {
index b616cc9b2cedcdc56c53a20279e1ab7cc53c6248..05b82def02613362e0a1b613e13af16c12c2f03c 100644 (file)
@@ -2099,7 +2099,7 @@ nds32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
   /* Add NDS32 register aliases.  To avoid search in user register name space,
      user_reg_map_name_to_regnum is not used.  */
-  maxregs = (gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch));
+  maxregs = gdbarch_num_cooked_regs (gdbarch);
   for (i = 0; i < ARRAY_SIZE (nds32_register_aliases); i++)
     {
       int regnum, j;
index b2f9b0558c482a0f4a74145a79e2c852d5e849d7..38ad7ba3f1b6f4f7d71dcdfd35d1356539be3449 100644 (file)
@@ -86,8 +86,7 @@ init_regcache_descr (struct gdbarch *gdbarch)
   /* Total size of the register space.  The raw registers are mapped
      directly onto the raw register cache while the pseudo's are
      either mapped onto raw-registers or memory.  */
-  descr->nr_cooked_registers = gdbarch_num_regs (gdbarch)
-                              + gdbarch_num_pseudo_regs (gdbarch);
+  descr->nr_cooked_registers = gdbarch_num_cooked_regs (gdbarch);
 
   /* Fill in a table of register types.  */
   descr->register_type
@@ -163,9 +162,7 @@ register_size (struct gdbarch *gdbarch, int regnum)
   struct regcache_descr *descr = regcache_descr (gdbarch);
   int size;
 
-  gdb_assert (regnum >= 0
-             && regnum < (gdbarch_num_regs (gdbarch)
-                          + gdbarch_num_pseudo_regs (gdbarch)));
+  gdb_assert (regnum >= 0 && regnum < gdbarch_num_cooked_regs (gdbarch));
   size = descr->sizeof_register[regnum];
   return size;
 }
@@ -1311,8 +1308,7 @@ register_dump::dump (ui_file *file)
   long register_offset = 0;
 
   gdb_assert (descr->nr_cooked_registers
-             == (gdbarch_num_regs (m_gdbarch)
-                 + gdbarch_num_pseudo_regs (m_gdbarch)));
+             == gdbarch_num_cooked_regs (m_gdbarch));
 
   for (regnum = -1; regnum < descr->nr_cooked_registers; regnum++)
     {
@@ -1637,9 +1633,7 @@ cooked_read_test (struct gdbarch *gdbarch)
   mock_target.reset ();
   /* Then, read all raw and pseudo registers, and don't expect calling
      to_{fetch,store}_registers.  */
-  for (int regnum = 0;
-       regnum < gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
-       regnum++)
+  for (int regnum = 0; regnum < gdbarch_num_cooked_regs (gdbarch); regnum++)
     {
       if (register_size (gdbarch, regnum) == 0)
        continue;
@@ -1665,9 +1659,7 @@ cooked_read_test (struct gdbarch *gdbarch)
      readonly regcache.  */
   mock_target.reset ();
 
-  for (int regnum = 0;
-       regnum < gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
-       regnum++)
+  for (int regnum = 0; regnum < gdbarch_num_cooked_regs (gdbarch); regnum++)
     {
       if (register_size (gdbarch, regnum) == 0)
        continue;
@@ -1762,8 +1754,7 @@ cooked_write_test (struct gdbarch *gdbarch)
 
   readwrite_regcache readwrite (gdbarch);
 
-  const int num_regs = (gdbarch_num_regs (gdbarch)
-                       + gdbarch_num_pseudo_regs (gdbarch));
+  const int num_regs = gdbarch_num_cooked_regs (gdbarch);
 
   for (auto regnum = 0; regnum < num_regs; regnum++)
     {
index ce01be5eb80759e8af731d181b9131823e263d60..80d8504b233406e49879b62f9f74e57e39530e46 100644 (file)
@@ -357,9 +357,7 @@ rs6000_register_sim_regno (struct gdbarch *gdbarch, int reg)
   if (tdep->sim_regno == NULL)
     init_sim_regno_table (gdbarch);
 
-  gdb_assert (0 <= reg 
-             && reg <= gdbarch_num_regs (gdbarch)
-                       + gdbarch_num_pseudo_regs (gdbarch));
+  gdb_assert (0 <= reg && reg <= gdbarch_num_cooked_regs (gdbarch));
   sim_regno = tdep->sim_regno[reg];
 
   if (sim_regno >= 0)
@@ -6475,8 +6473,7 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
       cur_reg += 32;
     }
 
-  gdb_assert (gdbarch_num_regs (gdbarch)
-             + gdbarch_num_pseudo_regs (gdbarch) == cur_reg);
+  gdb_assert (gdbarch_num_cooked_regs (gdbarch) == cur_reg);
 
   /* Register the ravenscar_arch_ops.  */
   if (mach == bfd_mach_ppc_e500)
index 368293d24fe0551eabe60d810cd1fd53c4df6ff2..d355e541483e9b1cb86d10edbb14da7fd94d4189 100644 (file)
@@ -616,13 +616,9 @@ stab_reg_to_regnum (struct symbol *sym, struct gdbarch *gdbarch)
 {
   int regno = gdbarch_stab_reg_to_regnum (gdbarch, SYMBOL_VALUE (sym));
 
-  if (regno < 0
-      || regno >= (gdbarch_num_regs (gdbarch)
-                  + gdbarch_num_pseudo_regs (gdbarch)))
+  if (regno < 0 || regno >= gdbarch_num_cooked_regs (gdbarch))
     {
-      reg_value_complaint (regno,
-                          gdbarch_num_regs (gdbarch)
-                            + gdbarch_num_pseudo_regs (gdbarch),
+      reg_value_complaint (regno, gdbarch_num_cooked_regs (gdbarch),
                           SYMBOL_PRINT_NAME (sym));
 
       regno = gdbarch_sp_regnum (gdbarch); /* Known safe, though useless.  */
index 9b0e740beb50e597df9eef1c650a76caad4cf020..87b493f79017d1bec82fa2487a3d970e6dc6cab0 100644 (file)
@@ -1553,8 +1553,7 @@ info_frame_command_core (struct frame_info *fi, bool selected_frame_p)
       }
 
     count = 0;
-    numregs = gdbarch_num_regs (gdbarch)
-             + gdbarch_num_pseudo_regs (gdbarch);
+    numregs = gdbarch_num_cooked_regs (gdbarch);
     for (i = 0; i < numregs; i++)
       if (i != sp_regnum
          && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
index 087de141f7f9fad75bcc27e046c5cfc8d2961081..bdd29c0f2b5930b5f36edc24e0cc653da72165c8 100644 (file)
@@ -854,12 +854,11 @@ tdesc_register_name (struct gdbarch *gdbarch, int regno)
 {
   struct tdesc_reg *reg = tdesc_find_register (gdbarch, regno);
   int num_regs = gdbarch_num_regs (gdbarch);
-  int num_pseudo_regs = gdbarch_num_pseudo_regs (gdbarch);
 
   if (reg != NULL)
     return reg->name.c_str ();
 
-  if (regno >= num_regs && regno < num_regs + num_pseudo_regs)
+  if (regno >= num_regs && regno < gdbarch_num_cooked_regs (gdbarch))
     {
       struct tdesc_arch_data *data
        = (struct tdesc_arch_data *) gdbarch_data (gdbarch, tdesc_data);
index a3484d2b3991fb3f6b8c441b0bf4ce1c4acf5364..cced08a8d31032d8059dc2661b95d6048b32e993 100644 (file)
@@ -48,7 +48,7 @@ struct trad_frame_saved_reg *
 trad_frame_alloc_saved_regs (struct gdbarch *gdbarch)
 {
   int regnum;
-  int numregs = gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
+  int numregs = gdbarch_num_cooked_regs (gdbarch);
   struct trad_frame_saved_reg *this_saved_regs
     = FRAME_OBSTACK_CALLOC (numregs, struct trad_frame_saved_reg);
 
index 12382cddb35710ce8efe030597af90ac7505f1dd..57a9000ee0a61e85f7b18b713ab6cfdafc3da6eb 100644 (file)
@@ -206,10 +206,7 @@ tui_show_register_group (struct reggroup *group,
 
   /* See how many registers must be displayed.  */
   nr_regs = 0;
-  for (regnum = 0;
-       regnum < gdbarch_num_regs (gdbarch)
-               + gdbarch_num_pseudo_regs (gdbarch);
-       regnum++)
+  for (regnum = 0; regnum < gdbarch_num_cooked_regs (gdbarch); regnum++)
     {
       const char *name;
 
@@ -253,10 +250,7 @@ tui_show_register_group (struct reggroup *group,
 
       /* Now set the register names and values.  */
       pos = 0;
-      for (regnum = 0;
-          regnum < gdbarch_num_regs (gdbarch)
-                   + gdbarch_num_pseudo_regs (gdbarch);
-          regnum++)
+      for (regnum = 0; regnum < gdbarch_num_cooked_regs (gdbarch); regnum++)
         {
          struct tui_gen_win_info *data_item_win;
           struct tui_data_element *data;
index 4dd67a64191d7d82b80e2e27032070db93258a93..c9e8c0d67f7b073a0db4481e4496a632f53524d0 100644 (file)
@@ -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)
index 3b32bcfc8278b44993b9cead6554cccb4260bbcb..4f29557fbf65c944877806ea96a73d5e943280a3 100644 (file)
@@ -234,9 +234,7 @@ xtensa_find_register_by_name (struct gdbarch *gdbarch, const char *name)
 {
   int i;
 
-  for (i = 0; i < gdbarch_num_regs (gdbarch)
-        + gdbarch_num_pseudo_regs (gdbarch);
-       i++)
+  for (i = 0; i < gdbarch_num_cooked_regs (gdbarch); i++)
 
     if (strcasecmp (gdbarch_tdep (gdbarch)->regmap[i].name, name) == 0)
       return i;
@@ -249,8 +247,7 @@ static const char *
 xtensa_register_name (struct gdbarch *gdbarch, int regnum)
 {
   /* Return the name stored in the register map.  */
-  if (regnum >= 0 && regnum < gdbarch_num_regs (gdbarch)
-                             + gdbarch_num_pseudo_regs (gdbarch))
+  if (regnum >= 0 && regnum < gdbarch_num_cooked_regs (gdbarch))
     return gdbarch_tdep (gdbarch)->regmap[regnum].name;
 
   internal_error (__FILE__, __LINE__, _("invalid register %d"), regnum);
@@ -276,8 +273,7 @@ xtensa_register_type (struct gdbarch *gdbarch, int regnum)
     return builtin_type (gdbarch)->builtin_data_ptr;
 
   /* Return the stored type for all other registers.  */
-  else if (regnum >= 0 && regnum < gdbarch_num_regs (gdbarch)
-                                  + gdbarch_num_pseudo_regs (gdbarch))
+  else if (regnum >= 0 && regnum < gdbarch_num_cooked_regs (gdbarch))
     {
       xtensa_register_t* reg = &tdep->regmap[regnum];
 
@@ -352,9 +348,7 @@ xtensa_reg_to_regnum (struct gdbarch *gdbarch, int regnum)
   if (regnum >= 0 && regnum < 16)
     return gdbarch_tdep (gdbarch)->a0_base + regnum;
 
-  for (i = 0;
-       i < gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
-       i++)
+  for (i = 0; i < gdbarch_num_cooked_regs (gdbarch); i++)
     if (regnum == gdbarch_tdep (gdbarch)->regmap[i].target_number)
       return i;
 
@@ -585,9 +579,7 @@ xtensa_pseudo_register_read (struct gdbarch *gdbarch,
       return REG_VALID;
     }
   /* Pseudo registers.  */
-  else if (regnum >= 0
-           && regnum < gdbarch_num_regs (gdbarch)
-                       + gdbarch_num_pseudo_regs (gdbarch))
+  else if (regnum >= 0 && regnum < gdbarch_num_cooked_regs (gdbarch))
     {
       xtensa_register_t *reg = &gdbarch_tdep (gdbarch)->regmap[regnum];
       xtensa_register_type_t type = reg->type;
@@ -670,9 +662,7 @@ xtensa_pseudo_register_write (struct gdbarch *gdbarch,
       return;
     }
   /* Pseudo registers.  */
-  else if (regnum >= 0
-          && regnum < gdbarch_num_regs (gdbarch)
-                      + gdbarch_num_pseudo_regs (gdbarch))
+  else if (regnum >= 0 && regnum < gdbarch_num_cooked_regs (gdbarch))
     {
       xtensa_register_t *reg = &gdbarch_tdep (gdbarch)->regmap[regnum];
       xtensa_register_type_t type = reg->type;