]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Remove MAX_REGISTER_SIZE in record-full.c
authorYao Qi <yao.qi@linaro.org>
Fri, 22 Sep 2017 13:39:01 +0000 (14:39 +0100)
committerYao Qi <yao.qi@linaro.org>
Fri, 13 Oct 2017 10:52:11 +0000 (11:52 +0100)
This patch changes record_full_core_regbuf from "gdb_byte *" to
reg_buffer.  As a result, MAX_REGISTER_SIZE is removed.

gdb:

2017-09-22  Yao Qi  <yao.qi@linaro.org>
:
* record-full.c (struct record_full_core_buf_entry):
(record_full_core_open_1):
(record_full_close):
(record_full_core_fetch_registers):
(record_full_core_store_registers):
* regcache.h (public:):

gdb/record-full.c
gdb/regcache.h

index a3283d3942dc7963b52712b375cae68f62968a8b..7f8849b96b51b20d96eb18efcd97c5a14ddd12b3 100644 (file)
@@ -168,7 +168,7 @@ struct record_full_core_buf_entry
 };
 
 /* Record buf with core target.  */
-static gdb_byte *record_full_core_regbuf = NULL;
+static reg_buffer *record_full_core_regbuf = NULL;
 static struct target_section *record_full_core_start;
 static struct target_section *record_full_core_end;
 static struct record_full_core_buf_entry *record_full_core_buf_list = NULL;
@@ -780,16 +780,16 @@ record_full_core_open_1 (const char *name, int from_tty)
 
   /* Get record_full_core_regbuf.  */
   target_fetch_registers (regcache, -1);
-  record_full_core_regbuf = (gdb_byte *) xmalloc (MAX_REGISTER_SIZE * regnum);
+  record_full_core_regbuf = new reg_buffer (get_regcache_arch (regcache),
+                                           false);
   for (i = 0; i < regnum; i ++)
-    regcache_raw_collect (regcache, i,
-                         record_full_core_regbuf + MAX_REGISTER_SIZE * i);
+    record_full_core_regbuf->raw_supply (i, regcache->register_buffer (i));
 
   /* Get record_full_core_start and record_full_core_end.  */
   if (build_section_table (core_bfd, &record_full_core_start,
                           &record_full_core_end))
     {
-      xfree (record_full_core_regbuf);
+      delete record_full_core_regbuf;
       record_full_core_regbuf = NULL;
       error (_("\"%s\": Can't find sections: %s"),
             bfd_get_filename (core_bfd), bfd_errmsg (bfd_get_error ()));
@@ -871,7 +871,7 @@ record_full_close (struct target_ops *self)
   /* Release record_full_core_regbuf.  */
   if (record_full_core_regbuf)
     {
-      xfree (record_full_core_regbuf);
+      delete record_full_core_regbuf;
       record_full_core_regbuf = NULL;
     }
 
@@ -2034,11 +2034,11 @@ record_full_core_fetch_registers (struct target_ops *ops,
 
       for (i = 0; i < num; i ++)
         regcache_raw_supply (regcache, i,
-                             record_full_core_regbuf + MAX_REGISTER_SIZE * i);
+                            record_full_core_regbuf->register_buffer (i));
     }
   else
     regcache_raw_supply (regcache, regno,
-                         record_full_core_regbuf + MAX_REGISTER_SIZE * regno);
+                        record_full_core_regbuf->register_buffer (regno));
 }
 
 /* "to_prepare_to_store" method for prec over corefile.  */
@@ -2057,8 +2057,8 @@ record_full_core_store_registers (struct target_ops *ops,
                              int regno)
 {
   if (record_full_gdb_operation_disable)
-    regcache_raw_collect (regcache, regno,
-                          record_full_core_regbuf + MAX_REGISTER_SIZE * regno);
+    record_full_core_regbuf->raw_supply (regno,
+                                        regcache->register_buffer (regno));
   else
     error (_("You can't do that without a process to debug."));
 }
index d06c410bfbfa46bc167025060ed47c6b843830ff..2aae6d396c7af9db1066ff83dcb11e25351c25b9 100644 (file)
@@ -271,8 +271,9 @@ public:
 
   void raw_set_cached_value (int regnum, const gdb_byte *buf);
 
-protected:
   gdb_byte *register_buffer (int regnum) const;
+
+protected:
   struct regcache_descr *m_descr;
 
 private: