forked from Imagelibrary/binutils-gdb
gdb/
* mi/mi-main.c (register_changed_p): Handle REG_UNAVAILABLE, and simplify, using regcache_cooked_read.
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
2011-03-18 Pedro Alves <pedro@codesourcery.com>
|
||||
|
||||
* mi/mi-main.c (register_changed_p): Handle REG_UNAVAILABLE, and
|
||||
simplify, using regcache_cooked_read.
|
||||
|
||||
2011-03-18 Pedro Alves <pedro@codesourcery.com>
|
||||
|
||||
* regcache.h (regcache_raw_read, regcache_raw_read_signed)
|
||||
|
||||
@@ -1016,23 +1016,25 @@ register_changed_p (int regnum, struct regcache *prev_regs,
|
||||
struct gdbarch *gdbarch = get_regcache_arch (this_regs);
|
||||
gdb_byte prev_buffer[MAX_REGISTER_SIZE];
|
||||
gdb_byte this_buffer[MAX_REGISTER_SIZE];
|
||||
enum register_status prev_status;
|
||||
enum register_status this_status;
|
||||
|
||||
/* Registers not valid in this frame return count as unchanged. */
|
||||
if (regcache_register_status (this_regs, regnum) == REG_UNKNOWN)
|
||||
return 0;
|
||||
|
||||
/* First time through or after gdbarch change consider all registers as
|
||||
changed. Same for registers not valid in the previous frame. */
|
||||
if (!prev_regs || get_regcache_arch (prev_regs) != gdbarch
|
||||
|| regcache_register_status (prev_regs, regnum) == REG_UNKNOWN)
|
||||
/* First time through or after gdbarch change consider all registers
|
||||
as changed. */
|
||||
if (!prev_regs || get_regcache_arch (prev_regs) != gdbarch)
|
||||
return 1;
|
||||
|
||||
/* Get register contents and compare. */
|
||||
regcache_cooked_read (prev_regs, regnum, prev_buffer);
|
||||
regcache_cooked_read (this_regs, regnum, this_buffer);
|
||||
prev_status = regcache_cooked_read (prev_regs, regnum, prev_buffer);
|
||||
this_status = regcache_cooked_read (this_regs, regnum, this_buffer);
|
||||
|
||||
return memcmp (prev_buffer, this_buffer,
|
||||
register_size (gdbarch, regnum)) != 0;
|
||||
if (this_status != prev_status)
|
||||
return 1;
|
||||
else if (this_status == REG_VALID)
|
||||
return memcmp (prev_buffer, this_buffer,
|
||||
register_size (gdbarch, regnum)) != 0;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Return a list of register number and value pairs. The valid
|
||||
|
||||
Reference in New Issue
Block a user