* regcache.c (registers_length): Remove.
authorUlrich Weigand <uweigand@de.ibm.com>
Thu, 8 May 2008 19:46:56 +0000 (19:46 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Thu, 8 May 2008 19:46:56 +0000 (19:46 +0000)
(set_register_cache): Verify that PBUFSIZ is large enough to hold a
full register packet.
* regcache.h (registers_length): Remove prototype.
* server.h (PBUFSIZ): Define to 16384.

gdb/gdbserver/ChangeLog
gdb/gdbserver/regcache.c
gdb/gdbserver/regcache.h
gdb/gdbserver/server.h

index da5402ce8bfa30a43b36d338c8692954a7e16a94..ab5396443b5cfeaa16fcacabc4850d4a5c1cd2bb 100644 (file)
@@ -1,3 +1,11 @@
+2008-05-08  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * regcache.c (registers_length): Remove.
+       (set_register_cache): Verify that PBUFSIZ is large enough to hold a
+       full register packet.
+       * regcache.h (registers_length): Remove prototype.
+       * server.h (PBUFSIZ): Define to 16384.
+
 2008-05-03  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * configure.srv (powerpc*-*-linux*): Set srv_regobj to
index a42d95ba9f0100e9c15134d6127cd1fbab38a69d..a324d43df65ccdb6c2d38347bc7f45b564390679 100644 (file)
@@ -86,12 +86,6 @@ regcache_invalidate ()
   for_each_inferior (&all_threads, regcache_invalidate_one);
 }
 
-int
-registers_length (void)
-{
-  return 2 * register_bytes;
-}
-
 void *
 new_register_cache (void)
 {
@@ -147,6 +141,10 @@ set_register_cache (struct reg *regs, int n)
 
   register_bytes = offset / 8;
 
+  /* Make sure PBUFSIZ is large enough to hold a full register packet.  */
+  if (2 * register_bytes + 32 > PBUFSIZ)
+    fatal ("Register packet size exceeds PBUFSIZ.");
+
   /* Re-allocate all pre-existing register caches.  */
   for_each_inferior (&all_threads, realloc_register_cache);
 }
index 641f928f98cf14859d1d83a999912d676a768f9b..48782ffb84b12c29437c959015fdb78ecb17d4a3 100644 (file)
@@ -43,10 +43,6 @@ void registers_to_string (char *buf);
 
 void registers_from_string (char *buf);
 
-/* Return the size in bytes of a string-encoded register packet.  */
-
-int registers_length (void);
-
 /* Return a pointer to the description of register ``n''.  */
 
 struct reg *find_register_by_number (int n);
index 92387666edbee61af8b7f5e4c804b055aa28babf..9d6c7512d75873f39d2c92e69c49c63a1e353048 100644 (file)
@@ -225,11 +225,10 @@ void warning (const char *string,...) ATTR_FORMAT (printf, 1, 2);
    is chosen to fill up a packet (the headers account for the 32).  */
 #define MAXBUFBYTES(N) (((N)-32)/2)
 
-/* Buffer sizes for transferring memory, registers, etc.  Round up PBUFSIZ to
-   hold all the registers, at least.  */
-#define        PBUFSIZ ((registers_length () + 32 > 2000) \
-                ? (registers_length () + 32) \
-                : 2000)
+/* Buffer sizes for transferring memory, registers, etc.   Set to a constant
+   value to accomodate multiple register formats.  This value must be at least
+   as large as the largest register set supported by gdbserver.  */
+#define PBUFSIZ 16384
 
 /* Version information, from version.c.  */
 extern const char version[];