MIPS: Go back with the default Linux # of registers to 90
authorMaciej W. Rozycki <macro@imgtec.com>
Mon, 18 Apr 2016 13:17:18 +0000 (14:17 +0100)
committerMaciej W. Rozycki <macro@imgtec.com>
Fri, 22 Apr 2016 00:20:59 +0000 (01:20 +0100)
Set the number of registers for non-XML-described Linux targets to 90,
reverting a change made here with the addition of DSP register support:

commit 1faeff088bbbd037d7769d214378b4faf805fa2e
Author: Maciej W. Rozycki <macro@linux-mips.org>
Date:   Thu Mar 1 22:19:48 2012 +0000

and fixing a regression introduced for legacy `gdbserver' targets
causing a "Remote 'g' packet reply is too long" error message where the
amount of register data received with a `g' packet (90) exceeds the
maximum number of registers expected (79).

Update the setting for XML-described targets, reflecting the actual
number of registers which have been assigned numbers, matching the:

      gdb_assert (gdbarch_num_regs (gdbarch) <= MIPS_RESTART_REGNUM);

requirement in `mips_linux_init_abi'.

gdb/
* mips-tdep.c (mips_gdbarch_init): For GDB_OSABI_LINUX set
`num_regs' to 90 rather than 79.  Where a target description is
present adjust the setting appropriately.

gdb/ChangeLog
gdb/mips-tdep.c

index b6282e65a3378c01c96ffb574ca312f7cb6b8cb0..d46984f27502716c04ec33188b891989e7cbb054 100644 (file)
@@ -1,3 +1,9 @@
+2016-04-22  Maciej W. Rozycki  <macro@imgtec.com>
+
+       * mips-tdep.c (mips_gdbarch_init): For GDB_OSABI_LINUX set
+       `num_regs' to 90 rather than 79.  Where a target description is
+       present adjust the setting appropriately.
+
 2016-04-21  Pedro Alves  <palves@redhat.com>
 
        * common/common-exceptions.h (GDB_XCPT_TRY): Add comment.
index c2bf0c01dc03fae2d3d16b5e191a0a83605b12c8..6098f71a4fd6dda65c5d4ecee51828412aa18775 100644 (file)
@@ -8192,7 +8192,7 @@ mips_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
       mips_regnum.dspctl = -1;
       dspacc = 72;
       dspctl = 78;
-      num_regs = 79;
+      num_regs = 90;
       reg_names = mips_linux_reg_names;
     }
   else
@@ -8311,6 +8311,8 @@ mips_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
          return NULL;
        }
 
+      num_regs = mips_regnum.fp_implementation_revision + 1;
+
       if (dspacc >= 0)
        {
          feature = tdesc_find_feature (info.target_desc,
@@ -8344,6 +8346,8 @@ mips_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
              mips_regnum.dspacc = dspacc;
              mips_regnum.dspctl = dspctl;
+
+             num_regs = mips_regnum.dspctl + 1;
            }
        }