aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYao Qi <yao.qi@linaro.org>2017-09-22 14:39:01 +0100
committerYao Qi <yao.qi@linaro.org>2017-10-13 11:52:11 +0100
commit21be97583901e297387fde9526ccec1d2b4c103d (patch)
tree5f579080331964ec90cf6c3076ee62c93f6e464a
parent2d6f8f50b4d975bfebebb0990b423071f341a157 (diff)
downloadfsf-binutils-gdb-21be97583901e297387fde9526ccec1d2b4c103d.zip
fsf-binutils-gdb-21be97583901e297387fde9526ccec1d2b4c103d.tar.gz
fsf-binutils-gdb-21be97583901e297387fde9526ccec1d2b4c103d.tar.bz2
Remove MAX_REGISTER_SIZE in record-full.c
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:):
-rw-r--r--gdb/record-full.c20
-rw-r--r--gdb/regcache.h3
2 files changed, 12 insertions, 11 deletions
diff --git a/gdb/record-full.c b/gdb/record-full.c
index a3283d3..7f8849b 100644
--- a/gdb/record-full.c
+++ b/gdb/record-full.c
@@ -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."));
}
diff --git a/gdb/regcache.h b/gdb/regcache.h
index d06c410..2aae6d3 100644
--- a/gdb/regcache.h
+++ b/gdb/regcache.h
@@ -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: