diff options
author | David S. Miller <davem@redhat.com> | 2011-10-11 18:35:26 +0000 |
---|---|---|
committer | David S. Miller <davem@redhat.com> | 2011-10-11 18:35:26 +0000 |
commit | 349d138559111de9e0ee57120e267005ac27cb6e (patch) | |
tree | 75fb7faca70e31eff2ab8ef0b7c427ee51a9b3bb | |
parent | bfb6c1ab1ed502faa7c3764722a1f1661f6d44e8 (diff) | |
download | gdb-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/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/regcache.c | 7 | ||||
-rw-r--r-- | gdb/regcache.h | 3 |
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 |