Re: PRecord sets memory even when it says it did not

Michael Snyder
2009-09-14T18:00:53Z

Marc Khouzam wrote:
>
>
>> -----Original Message-----
>> From: Pedro Alves [mailto:pedro@codesourcery.com]
>> Sent: Monday, September 14, 2009 1:50 PM
>> To: gdb@sourceware.org
>> Cc: Greg Law; Hui Zhu; Marc Khouzam; Michael Snyder; gdb-patches ml
>> Subject: Re: PRecord sets memory even when it says it did not
>>
>>> Could this be related to the caching changes that have happened
>>> recently? i.e. does the cache get updated even though the
>> underlying
>>> poke operation failed? If so, this issue would seem to be
>> wider than
>>> just prec (and wider than reverse, too).
>> If so, then there's an easy way to find out: try again with
>> "set stack-cache off".
>>
>
> Yes, that seems to fix everything.

That's the change, and here's the problem I think:
target.c::memory_xfer_partial calls dcache_xfer_memory
and dcache_update before calling ops->to_xfer_partial.

In this case, record_xfer_partial errors out, (because of
a query, but for this or other targets it could error out
for other reasons). But there is no cleanup in place to
back out the change that has already been made in the
dcache.

Michael