summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/sparc-nat.c4
-rw-r--r--gdb/sparc-tdep.c3
-rw-r--r--gdb/sparc64-tdep.c3
4 files changed, 14 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ff93d0b201..ea55f7c935 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2011-05-21 Mark Kettenis <kettenis@gnu.org>
+
+ * sparc-nat.c (sparc_fetch_inferior_registers): Explicitly supply
+ zero as the value for %g0 in the register cache.
+ * sparc-tdep.c (sparc32_supply_gregset): Likewise.
+ * sparc64-tdep.c (sparc64_supply_gregset): Likewise.
+
2011-05-20 Pedro Alves <pedro@codesourcery.com>
* infrun.c (proceed): Set previous_inferior_ptid here.
diff --git a/gdb/sparc-nat.c b/gdb/sparc-nat.c
index 60d2989e4e..3d936fcc8f 100644
--- a/gdb/sparc-nat.c
+++ b/gdb/sparc-nat.c
@@ -159,7 +159,9 @@ sparc_fetch_inferior_registers (struct target_ops *ops,
if (regnum == SPARC_G0_REGNUM)
{
- regcache_raw_supply (regcache, SPARC_G0_REGNUM, NULL);
+ gdb_byte zero[8] = { 0 };
+
+ regcache_raw_supply (regcache, SPARC_G0_REGNUM, &zero);
return;
}
diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c
index 1039bd8e76..84fa3b1e74 100644
--- a/gdb/sparc-tdep.c
+++ b/gdb/sparc-tdep.c
@@ -1618,6 +1618,7 @@ sparc32_supply_gregset (const struct sparc_gregset *gregset,
int regnum, const void *gregs)
{
const gdb_byte *regs = gregs;
+ gdb_byte zero[4] = { 0 };
int i;
if (regnum == SPARC32_PSR_REGNUM || regnum == -1)
@@ -1637,7 +1638,7 @@ sparc32_supply_gregset (const struct sparc_gregset *gregset,
regs + gregset->r_y_offset);
if (regnum == SPARC_G0_REGNUM || regnum == -1)
- regcache_raw_supply (regcache, SPARC_G0_REGNUM, NULL);
+ regcache_raw_supply (regcache, SPARC_G0_REGNUM, &zero);
if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_O7_REGNUM) || regnum == -1)
{
diff --git a/gdb/sparc64-tdep.c b/gdb/sparc64-tdep.c
index 674d390bdb..6efa2202a5 100644
--- a/gdb/sparc64-tdep.c
+++ b/gdb/sparc64-tdep.c
@@ -1206,6 +1206,7 @@ sparc64_supply_gregset (const struct sparc_gregset *gregset,
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
int sparc32 = (gdbarch_ptr_bit (gdbarch) == 32);
const gdb_byte *regs = gregs;
+ gdb_byte zero[8] = { 0 };
int i;
if (sparc32)
@@ -1268,7 +1269,7 @@ sparc64_supply_gregset (const struct sparc_gregset *gregset,
}
if (regnum == SPARC_G0_REGNUM || regnum == -1)
- regcache_raw_supply (regcache, SPARC_G0_REGNUM, NULL);
+ regcache_raw_supply (regcache, SPARC_G0_REGNUM, &zero);
if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_O7_REGNUM) || regnum == -1)
{