* avr-tdep.c (avr_io_reg_read_command): Fix to handle case when the
authorTheodore A. Roth <troth@openavr.org>
Wed, 5 Mar 2003 00:19:56 +0000 (00:19 +0000)
committerTheodore A. Roth <troth@openavr.org>
Wed, 5 Mar 2003 00:19:56 +0000 (00:19 +0000)
number of io registers reported by remote target is not a multiple of step.

gdb/ChangeLog
gdb/avr-tdep.c

index 329e8642d15aea9fb0f7252a1eefd65856300ca8..b9eee6346ba9f5f77edb3d18c5de63c11ab49c5d 100644 (file)
@@ -1,3 +1,9 @@
+2003-03-04  Theodore A. Roth  <troth@openavr.org>
+
+       * avr-tdep.c (avr_io_reg_read_command): Fix to handle case when the
+       number of io registers reported by remote target is not a multiple of
+       step.
+
 2003-03-04  David Carlton  <carlton@math.stanford.edu>
 
        * symtab.c (lookup_partial_symbol): Add linkage_name argument.
index 952b4e4c7b73e00aeb94774bfa93f439efc4c47d..975132abd987627bff73791534484a396d884bb0 100644 (file)
@@ -1279,7 +1279,10 @@ avr_io_reg_read_command (char *args, int from_tty)
 
   for (i = 0; i < nreg; i += step)
     {
-      j = step - (nreg % step);        /* how many registers this round? */
+      /* how many registers this round? */
+      j = step;
+      if ((i+j) >= nreg)
+        j = nreg - i;           /* last block is less than 8 registers */
 
       snprintf (query, sizeof (query) - 1, "avr.io_reg:%x,%x", i, j);
       target_query ((int) 'R', query, buf, &bufsiz);