* regcache.c (set_register_cache): Invalidate regcaches before

changing the register cache layout.
	(regcache_invalidate_one): Allow a NULL regcache.
	* linux-x86-low.c (x86_linux_update_xmltarget): Invalidate
	regcaches before changing the register cache layout or the target
	regsets.
This commit is contained in:
Pedro Alves 2010-04-12 13:25:51 +00:00
parent 59e0401339
commit 45ba0d0206
3 changed files with 21 additions and 0 deletions

View File

@ -1,3 +1,12 @@
2010-04-12 Pedro Alves <pedro@codesourcery.com>
* regcache.c (set_register_cache): Invalidate regcaches before
changing the register cache layout.
(regcache_invalidate_one): Allow a NULL regcache.
* linux-x86-low.c (x86_linux_update_xmltarget): Invalidate
regcaches before changing the register cache layout or the target
regsets.
2010-04-12 H.J. Lu <hongjiu.lu@intel.com>
* linux-x86-low.c (x86_linux_update_xmltarget): Avoid unused

View File

@ -841,6 +841,11 @@ x86_linux_update_xmltarget (void)
if (!current_inferior)
return;
/* Before changing the register cache internal layout or the target
regsets, flush the contents of the current valid caches back to
the threads. */
regcache_invalidate ();
pid = pid_of (get_thread_lwp (current_inferior));
#ifdef __x86_64__
if (num_xmm_registers == 8)

View File

@ -61,6 +61,9 @@ regcache_invalidate_one (struct inferior_list_entry *entry)
regcache = (struct regcache *) inferior_regcache_data (thread);
if (regcache == NULL)
return;
if (regcache->registers_valid)
{
struct thread_info *saved_inferior = current_inferior;
@ -149,6 +152,10 @@ set_register_cache (struct reg *regs, int n)
{
int offset, i;
/* Before changing the register cache internal layout, flush the
contents of valid caches back to the threads. */
regcache_invalidate ();
reg_defs = regs;
num_registers = n;