aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid S. Miller <davem@redhat.com>2011-10-11 18:35:26 +0000
committerDavid S. Miller <davem@redhat.com>2011-10-11 18:35:26 +0000
commit349d138559111de9e0ee57120e267005ac27cb6e (patch)
tree75fb7faca70e31eff2ab8ef0b7c427ee51a9b3bb
parentbfb6c1ab1ed502faa7c3764722a1f1661f6d44e8 (diff)
downloadgdb-349d138559111de9e0ee57120e267005ac27cb6e.zip
gdb-349d138559111de9e0ee57120e267005ac27cb6e.tar.gz
gdb-349d138559111de9e0ee57120e267005ac27cb6e.tar.bz2
Fix regcache_restore() handling of unavailable regs.
* regcache.c (regcache_restore): Do not write unavailable regs, mark static. * regcache.h (regcache_restore): Remove declaration.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/regcache.c7
-rw-r--r--gdb/regcache.h3
3 files changed, 10 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ccd0530..e871fb1 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2011-10-11 David S. Miller <davem@davemloft.net>
+
+ * regcache.c (regcache_restore): Do not write unavailable regs, mark
+ static.
+ * regcache.h (regcache_restore): Remove declaration.
+
2011-10-11 Jan Kratochvil <jan.kratochvil@redhat.com>
Revert this part of:
diff --git a/gdb/regcache.c b/gdb/regcache.c
index 37092f8..ea8189e 100644
--- a/gdb/regcache.c
+++ b/gdb/regcache.c
@@ -331,7 +331,7 @@ regcache_save (struct regcache *dst, regcache_cooked_read_ftype *cooked_read,
}
}
-void
+static void
regcache_restore (struct regcache *dst,
regcache_cooked_read_ftype *cooked_read,
void *cooked_read_context)
@@ -351,9 +351,10 @@ regcache_restore (struct regcache *dst,
{
if (gdbarch_register_reggroup_p (gdbarch, regnum, restore_reggroup))
{
- int valid = cooked_read (cooked_read_context, regnum, buf);
+ enum register_status status;
- if (valid)
+ status = cooked_read (cooked_read_context, regnum, buf);
+ if (status == REG_VALID)
regcache_cooked_write (dst, regnum, buf);
}
}
diff --git a/gdb/regcache.h b/gdb/regcache.h
index 5531f39..440fbe6 100644
--- a/gdb/regcache.h
+++ b/gdb/regcache.h
@@ -174,9 +174,6 @@ typedef enum register_status (regcache_cooked_read_ftype) (void *src,
extern void regcache_save (struct regcache *dst,
regcache_cooked_read_ftype *cooked_read,
void *cooked_read_context);
-extern void regcache_restore (struct regcache *dst,
- regcache_cooked_read_ftype *cooked_read,
- void *cooked_read_context);
/* Copy/duplicate the contents of a register cache. By default, the
operation is pass-through. Writes to DST and reads from SRC will