aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorAlan Hayward <alan.hayward@arm.com>2017-05-03 14:51:40 +0100
committerAlan Hayward <alan.hayward@arm.com>2017-05-03 14:51:40 +0100
commitf81fdd350e688bd0216486b30884a52ebc4f32b8 (patch)
treebf696bb68f8ee79833fd42e3107c207abf6845d6 /gdb
parent35837774a77d641ba3ae75930a7b08ed853759ad (diff)
Remove MAX_REGISTER_SIZE from frv-linux-tdep.c
gdb/ * frv-linux-tdep.c (frv_linux_supply_gregset): Use raw_supply_zeroed. * regcache.c (regcache::raw_supply_zeroed): New function. * regcache.h (regcache::raw_supply_zeroed): New declaration.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/frv-linux-tdep.c7
-rw-r--r--gdb/regcache.c20
-rw-r--r--gdb/regcache.h2
4 files changed, 30 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9bb3510442..4e278f59b6 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2017-05-03 Alan Hayward <alan.hayward@arm.com>
+
+ * frv-linux-tdep.c (frv_linux_supply_gregset): Use raw_supply_zeroed.
+ * regcache.c (regcache::raw_supply_zeroed): New function.
+ * regcache.h (regcache::raw_supply_zeroed): New declaration.
+
2017-05-03 Simon Marchi <simon.marchi@ericsson.com>
* gdbarch.sh: Remove commented out definition of
diff --git a/gdb/frv-linux-tdep.c b/gdb/frv-linux-tdep.c
index eb87f93058..cd02669d25 100644
--- a/gdb/frv-linux-tdep.c
+++ b/gdb/frv-linux-tdep.c
@@ -413,17 +413,14 @@ frv_linux_supply_gregset (const struct regset *regset,
int regnum, const void *gregs, size_t len)
{
int regi;
- char zerobuf[MAX_REGISTER_SIZE];
-
- memset (zerobuf, 0, MAX_REGISTER_SIZE);
/* gr0 always contains 0. Also, the kernel passes the TBR value in
this slot. */
- regcache_raw_supply (regcache, first_gpr_regnum, zerobuf);
+ regcache->raw_supply_zeroed (first_gpr_regnum);
/* Fill gr32, ..., gr63 with zeros. */
for (regi = first_gpr_regnum + 32; regi <= last_gpr_regnum; regi++)
- regcache_raw_supply (regcache, regi, zerobuf);
+ regcache->raw_supply_zeroed (regi);
regcache_supply_regset (regset, regcache, regnum, gregs, len);
}
diff --git a/gdb/regcache.c b/gdb/regcache.c
index 03f172e1b2..d2c253a9b6 100644
--- a/gdb/regcache.c
+++ b/gdb/regcache.c
@@ -1199,6 +1199,26 @@ regcache::raw_supply (int regnum, const void *buf)
}
}
+/* Supply register REGNUM with zeroed value to REGCACHE. This is not the same
+ as calling raw_supply with NULL (which will set the state to
+ unavailable). */
+
+void
+regcache::raw_supply_zeroed (int regnum)
+{
+ void *regbuf;
+ size_t size;
+
+ gdb_assert (regnum >= 0 && regnum < m_descr->nr_raw_registers);
+ gdb_assert (!m_readonly_p);
+
+ regbuf = register_buffer (regnum);
+ size = m_descr->sizeof_register[regnum];
+
+ memset (regbuf, 0, size);
+ m_register_status[regnum] = REG_VALID;
+}
+
/* Collect register REGNUM from REGCACHE and store its contents in BUF. */
void
diff --git a/gdb/regcache.h b/gdb/regcache.h
index 36255da12d..da00abd9f9 100644
--- a/gdb/regcache.h
+++ b/gdb/regcache.h
@@ -294,6 +294,8 @@ public:
void raw_supply (int regnum, const void *buf);
+ void raw_supply_zeroed (int regnum);
+
enum register_status get_register_status (int regnum) const;
void raw_set_cached_value (int regnum, const gdb_byte *buf);