aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2024-11-08 10:00:13 +0100
committerTom de Vries <tdevries@suse.de>2024-11-08 10:00:13 +0100
commite08e0b3e788e7e752481a2a1fd84ddd0b3a46dee (patch)
tree722ac9ddc6b05d917f25f3a5f2c91e43cbad9557
parent01086f8a21c2cd0fe461953d242cd9579fc38959 (diff)
downloadbinutils-e08e0b3e788e7e752481a2a1fd84ddd0b3a46dee.zip
binutils-e08e0b3e788e7e752481a2a1fd84ddd0b3a46dee.tar.gz
binutils-e08e0b3e788e7e752481a2a1fd84ddd0b3a46dee.tar.bz2
[gdb/tdep] Use raw_supply_zeroed for IA-64 gr0 and fr0 regs
Use reg_buffer::raw_supply_zeroed for IA-64 registers gr0 and fr0. Tested by rebuilding on x86_64-linux. Approved-By: Tom Tromey <tom@tromey.com>
-rw-r--r--gdb/ia64-linux-nat.c13
-rw-r--r--gdb/ia64-linux-tdep.c3
2 files changed, 4 insertions, 12 deletions
diff --git a/gdb/ia64-linux-nat.c b/gdb/ia64-linux-nat.c
index 7a8e742..fd78632 100644
--- a/gdb/ia64-linux-nat.c
+++ b/gdb/ia64-linux-nat.c
@@ -490,7 +490,6 @@ supply_fpregset (struct regcache *regcache, const fpregset_t *fpregsetp)
{
int regi;
const char *from;
- const gdb_byte f_zero[16] = { 0 };
const gdb_byte f_one[16] =
{ 0, 0, 0, 0, 0, 0, 0, 0x80, 0xff, 0xff, 0, 0, 0, 0, 0, 0 };
@@ -499,7 +498,7 @@ supply_fpregset (struct regcache *regcache, const fpregset_t *fpregsetp)
for fr0/fr1 and always supply their expected values. */
/* fr0 is always read as zero. */
- regcache->raw_supply (IA64_FR0_REGNUM, f_zero);
+ regcache->raw_supply_zeroed (IA64_FR0_REGNUM);
/* fr1 is always read as one (1.0). */
regcache->raw_supply (IA64_FR1_REGNUM, f_one);
@@ -740,20 +739,14 @@ ia64_linux_fetch_register (struct regcache *regcache, int regnum)
/* r0 cannot be fetched but is always zero. */
if (regnum == IA64_GR0_REGNUM)
{
- const gdb_byte zero[8] = { 0 };
-
- gdb_assert (sizeof (zero) == register_size (gdbarch, regnum));
- regcache->raw_supply (regnum, zero);
+ regcache->raw_supply_zeroed (regnum);
return;
}
/* fr0 cannot be fetched but is always zero. */
if (regnum == IA64_FR0_REGNUM)
{
- const gdb_byte f_zero[16] = { 0 };
-
- gdb_assert (sizeof (f_zero) == register_size (gdbarch, regnum));
- regcache->raw_supply (regnum, f_zero);
+ regcache->raw_supply_zeroed (regnum);
return;
}
diff --git a/gdb/ia64-linux-tdep.c b/gdb/ia64-linux-tdep.c
index 12083e9..da06f91 100644
--- a/gdb/ia64-linux-tdep.c
+++ b/gdb/ia64-linux-tdep.c
@@ -174,7 +174,6 @@ ia64_linux_supply_fpregset (const struct regset *regset,
struct regcache *regcache,
int regnum, const void *regs, size_t len)
{
- const gdb_byte f_zero[16] = { 0 };
const gdb_byte f_one[16] =
{ 0, 0, 0, 0, 0, 0, 0, 0x80, 0xff, 0xff, 0, 0, 0, 0, 0, 0 };
@@ -184,7 +183,7 @@ ia64_linux_supply_fpregset (const struct regset *regset,
did the same. So ignore whatever might be recorded in fpregset_t
for fr0/fr1 and always supply their expected values. */
if (regnum == -1 || regnum == IA64_FR0_REGNUM)
- regcache->raw_supply (IA64_FR0_REGNUM, f_zero);
+ regcache->raw_supply_zeroed (IA64_FR0_REGNUM);
if (regnum == -1 || regnum == IA64_FR1_REGNUM)
regcache->raw_supply (IA64_FR1_REGNUM, f_one);
}