http://sourceware.org/ml/gdb-patches/2010-11/msg00112.html
authorAndrew Burgess <aburgess@broadcom.com>
Tue, 11 Jan 2011 14:19:34 +0000 (14:19 +0000)
committerAndrew Burgess <aburgess@broadcom.com>
Tue, 11 Jan 2011 14:19:34 +0000 (14:19 +0000)
gdb/ChangeLog
* remote-sim.c (gdbsim_store_register): Update API to
sim_store_register to check more error conditions.
include/gdb/ChangeLog
* remote-sim.h (sim_store_register): Update the API
documentation for this function.
sim/erc32/ChangeLog
sim/h8300/ChangeLog
sim/m32c/ChangeLog
sim/mn10300/ChangeLog
sim/ppc/ChangeLog
sim/rx/ChangeLog
sim/v850/ChangeLog
* ???.c (sim_store_register): Update return value to
match new API.

18 files changed:
gdb/ChangeLog
gdb/remote-sim.c
include/gdb/ChangeLog
include/gdb/remote-sim.h
sim/erc32/ChangeLog
sim/erc32/interf.c
sim/h8300/ChangeLog
sim/h8300/compile.c
sim/m32c/ChangeLog
sim/m32c/gdb-if.c
sim/mn10300/ChangeLog
sim/mn10300/interp.c
sim/ppc/ChangeLog
sim/ppc/gdb-sim.c
sim/rx/ChangeLog
sim/rx/gdb-if.c
sim/v850/ChangeLog
sim/v850/interp.c

index 2e86bb8d0be736be5454113a5cc1b635cc075c1f..18f70ef29c892b7ac6c4fc0485bf1a41722e78a6 100644 (file)
@@ -1,3 +1,8 @@
+2011-01-11  Andrew Burgess  <aburgess@broadcom.com>
+
+       * remote-sim.c (gdbsim_store_register): Update API to
+       sim_store_register to check more error conditions.
+
 2011-01-10  Michael Snyder  <msnyder@vmware.com>
 
        * nto-procfs.c: Comment cleanup, mostly periods and spaces.
index f2015f0257798cc8d032a6563372cad4d20ba7de..baaf4397a422fe85d12c5c554ba74ea016174a6b 100644 (file)
@@ -529,9 +529,13 @@ gdbsim_store_register (struct target_ops *ops,
       if (nr_bytes > 0 && nr_bytes != register_size (gdbarch, regno))
        internal_error (__FILE__, __LINE__,
                        _("Register size different to expected"));
-      /* FIXME: cagney/2002-05-27: Should check `nr_bytes == 0'
-        indicating that GDB and the SIM have different ideas about
-        which registers are fetchable.  */
+      if (nr_bytes < 0)
+        internal_error (__FILE__, __LINE__,
+                       _("Register %d not updated"), regno);
+      if (nr_bytes == 0)
+        warning (_("Register %s not updated"),
+                 gdbarch_register_name (gdbarch, regno));
+
       if (remote_debug)
        {
          printf_filtered ("gdbsim_store_register: %d", regno);
index 4e6b8521750d08b3c4826d8e11e77bc292d54443..19509e221889079006d6e8c0aef014dbcfa8ac5c 100644 (file)
@@ -1,3 +1,8 @@
+2011-01-11  Andrew Burgess  <aburgess@broadcom.com>
+
+       * remote-sim.h (sim_store_register): Update the API
+       documentation for this function.
+
 2010-09-06  Pedro Alves  <pedro@codesourcery.com>
 
        * signals.def: Replace all ANY uses by SET with specific numbers.
index 9c204525b7525c74be147d77be1614877129ce2c..a171cfda5b3ec30d76e883f0ac69eda5211f9df1 100644 (file)
@@ -191,13 +191,15 @@ int sim_fetch_register (SIM_DESC sd, int regno, unsigned char *buf, int length);
 
 
 /* Store register REGNO from the raw (target endian) value in BUF.
-   Return the actual size of the register or zero if REGNO is not
-   applicable.
 
-   Legacy implementations ignore LENGTH and always return -1.
+   Return the actual size of the register, any size not equal to
+   LENGTH indicates the register was not updated correctly.
 
-   If LENGTH does not match the size of REGNO no data is transfered
-   (the actual register size is still returned). */
+   Return a LENGTH of -1 to indicate the register was not updated
+   and an error has occurred.
+
+   Return a LENGTH of 0 to indicate the register was not updated
+   but no error has occurred. */
 
 int sim_store_register (SIM_DESC sd, int regno, unsigned char *buf, int length);
 
index cdfcc59a92cde610a3085192b8440f009991d52d..cf128ba1d84b4402b8b037666808121bfb8f5b21 100644 (file)
@@ -1,3 +1,8 @@
+2011-01-11  Andrew Burgess  <aburgess@broadcom.com>
+
+       * interf.c (sim_store_register): Update return value to
+       match new API.
+
 2010-05-20  Joel Brobecker  <brobecker@adacore.com>
 
        * sis.h: Remove #include <stdint.h>.
index edba53473540267b4bfc958f9cf3557f509598ef..d81511a06d5da095fc3df9a85dc32aa4852fccf3 100644 (file)
@@ -330,7 +330,7 @@ sim_store_register(sd, regno, value, length)
        regval = (value[3] << 24) | (value[2] << 16)
                 | (value[1] << 8) | value[0];
     set_regi(&sregs, regno, regval);
-    return -1;
+    return length;
 }
 
 
index adda60ef6ae72b1bc06291903d57a8c1898315c0..81d9d01683b3119f17530a58b2575d9a9e89c0c1 100644 (file)
@@ -1,3 +1,8 @@
+2011-01-11  Andrew Burgess  <aburgess@broadcom.com>
+
+       * compile.c (sim_store_register): Update return value to
+       match new API.
+
 2010-04-14  Mike Frysinger  <vapier@gentoo.org>
 
        * compile.c (sim_write): Add const to buffer arg.
index 44d60f6d1524de8eafcab2ca4e3b4e1b59b41876..b249080dd884dd3d258809f63913c4c318e6d48e 100644 (file)
@@ -4715,7 +4715,7 @@ sim_store_register (SIM_DESC sd, int rn, unsigned char *value, int length)
       h8_set_ticks (sd, longval);
       break;
     }
-  return -1;
+  return length;
 }
 
 int
index 89e6643737a90c340f39f74cbbbcafdab9834152..1a34d71910c4106eec9c9ab648525970ab7792b4 100644 (file)
@@ -1,3 +1,8 @@
+2011-01-11  Andrew Burgess <aburgess@broadcom.com>
+
+       * gdb-if.c (sim_store_register): Update return value to
+       match new API.
+
 2010-12-04  Masaki Muranaka  <monaka@monami-software.com>
 
        * Makefile.in: Use CC_FOR_BUILD to build opc2c.
index 1a93ab6bc08199c3aa569edfeacb3275a690ec48..7da441655ae351686742ec38d3f73f92099f631f 100644 (file)
@@ -406,7 +406,7 @@ sim_store_register (SIM_DESC sd, int regno, unsigned char *buf, int length)
   check_desc (sd);
 
   if (!check_regno (regno))
-    return 0;
+    return -1;
 
   size = reg_size (regno);
 
@@ -503,7 +503,7 @@ sim_store_register (SIM_DESC sd, int regno, unsigned char *buf, int length)
        default:
          fprintf (stderr, "m32c minisim: unrecognized register number: %d\n",
                   regno);
-         return -1;
+         return 0;
        }
     }
 
index 0717a71d3fa261a103a3ae3a146c2d5a2efce43e..2077186881ac6d0e64e3fba301c23dbcb7fd12a7 100644 (file)
@@ -1,3 +1,8 @@
+2011-01-11  Andrew Burgess  <aburgess@broadcom.com>
+
+       * interp.c (sim_store_register): Update return value to
+       match new API.
+
 2010-04-19  Mike Frysinger  <vapier@gentoo.org>
 
        * dv-mn103ser.c (sockser_addr, USE_SOCKSER_P): Delete
index 6beac4802f9f6551f353a09bff09c82123f46f7c..1230bf55cb5eeef7b1ce86bbd14290d55b9702b8 100644 (file)
@@ -410,7 +410,7 @@ sim_store_register (SIM_DESC sd,
                    int length)
 {
   State.regs[rn] = get_word (memory);
-  return -1;
+  return length;
 }
 
 
index 3a2f8cee95203d8972b4fabd321b93e4240a252c..faeec4fdd85b6fb4db0dbc9181988664370ed460 100644 (file)
@@ -1,3 +1,8 @@
+2011-01-11  Andrew Burgess  <aburgess@broadcom.com>
+
+       * gdb-sim.c (sim_store_register): Update return value to
+       match new API.
+
 2011-01-05  Joel Brobecker  <brobecker@adacore.com>
 
        * psim.texinfo: Copyright year update.
index 97567ecc814bad5e5c6704ad74391183b4b7c431..9041f7046d54807c962252419f2a2431d4e6afd5 100644 (file)
@@ -1290,7 +1290,7 @@ sim_store_register (SIM_DESC sd, int regno, unsigned char *buf, int length)
   const char *regname = regnum2name (regno);
 
   if (simulator == NULL || regname == NULL)
-    return -1;
+    return 0;
 
   TRACE(trace_gdb, ("sim_store_register(regno=%d(%s), buf=0x%lx)\n",
                    regno, regname, (long)buf));
index 1f9866a11558bb79715919b6ce0127729f316dee..f29cb938d6241e150f83ec53f790cb65c52bd397 100644 (file)
@@ -1,3 +1,8 @@
+2011-01-11  Andrew Burgess  <aburgess@broadcom.com>
+
+       * gdb-if.c (sim_store_register): Update return value to
+       match new API.
+
 2010-12-14  DJ Delorie  <dj@redhat.com>
 
        * rx.c (decode_opcode): For "MVFC PC,", use the address of the
index 8922228fc89f71c52efd01e6b998530352d4ca21..ca4116135d8656b81a399d79726ffb28fab0078e 100644 (file)
@@ -534,12 +534,12 @@ sim_store_register (SIM_DESC sd, int regno, unsigned char *buf, int length)
   check_desc (sd);
 
   if (!check_regno (regno))
-    return 0;
+    return -1;
 
   size = reg_size (regno);
 
   if (length != size)
-    return 0;
+    return -1;
 
   if (rx_big_endian)
     val = get_be (buf, length);
@@ -630,7 +630,7 @@ sim_store_register (SIM_DESC sd, int regno, unsigned char *buf, int length)
     default:
       fprintf (stderr, "rx minisim: unrecognized register number: %d\n",
               regno);
-      return -1;
+      return 0;
     }
 
   return size;
index 4d43d3e6492e8e488b25da7dbc0fcd0af93bcb19..5ca0e57bba7bd951fa2dd1b2d720186ae1c557d9 100644 (file)
@@ -1,3 +1,8 @@
+2011-01-11  Andrew Burgess  <aburgess@broadcom.com>
+
+       * interp.c (sim_store_register): Update return value to
+       match new API.
+
 2010-03-30  Mike Frysinger  <vapier@gentoo.org>
 
        * interp.c (interrupt_names): Add const to pointer type.
index e8bea5f6752d9624300092d92995fb902da1f5de..21b587eeedf19e8099b17a50ca475c64a2fab035 100644 (file)
@@ -327,7 +327,7 @@ sim_store_register (sd, rn, memory, length)
      int length;
 {
   State.regs[rn] = T2H_4 (*(unsigned32*)memory);
-  return -1;
+  return length;
 }
 
 void