* mi/mi-main.c (register_changed_p): Handle REG_UNAVAILABLE, and
	simplify, using regcache_cooked_read.
This commit is contained in:
Pedro Alves
2011-03-18 18:40:08 +00:00
parent 05d1431c1e
commit e69aa73e27
2 changed files with 19 additions and 12 deletions

View File

@@ -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)

View File

@@ -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