btrace: allow full memory and register access for non-replaying threads
The record btrace target does not allow accessing memory and storing registers while replaying. For multi-threaded applications, this prevents those accesses also for threads that are at the end of their execution history as long as at least one thread is replaying. Change this to only check if the selected thread is replaying. This allows threads that are at the end of their execution history to read and write memory and to store registers. Also change the error message to reflect this change. gdb/ * record-btrace.c (record_btrace_xfer_partial) (record_btrace_store_registers, record_btrace_prepare_to_store): Call record_btrace_is_replaying with inferior_ptid instead of minus_one_ptid. (record_btrace_store_registers): Change error message.
This commit is contained in:
parent
a52eab4808
commit
4d10e986f4
@ -1,3 +1,11 @@
|
||||
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
||||
|
||||
* record-btrace.c (record_btrace_xfer_partial)
|
||||
(record_btrace_store_registers, record_btrace_prepare_to_store):
|
||||
Call record_btrace_is_replaying with inferior_ptid instead of
|
||||
minus_one_ptid.
|
||||
(record_btrace_store_registers): Change error message.
|
||||
|
||||
2015-09-18 Markus Metzger <markus.t.metzger@intel.com>
|
||||
|
||||
* record-btrace.c (record_btrace_is_replaying): Add ptid argument.
|
||||
|
@ -1160,7 +1160,7 @@ record_btrace_xfer_partial (struct target_ops *ops, enum target_object object,
|
||||
/* Filter out requests that don't make sense during replay. */
|
||||
if (replay_memory_access == replay_memory_access_read_only
|
||||
&& !record_btrace_generating_corefile
|
||||
&& record_btrace_is_replaying (ops, minus_one_ptid))
|
||||
&& record_btrace_is_replaying (ops, inferior_ptid))
|
||||
{
|
||||
switch (object)
|
||||
{
|
||||
@ -1314,8 +1314,8 @@ record_btrace_store_registers (struct target_ops *ops,
|
||||
struct target_ops *t;
|
||||
|
||||
if (!record_btrace_generating_corefile
|
||||
&& record_btrace_is_replaying (ops, minus_one_ptid))
|
||||
error (_("This record target does not allow writing registers."));
|
||||
&& record_btrace_is_replaying (ops, inferior_ptid))
|
||||
error (_("Cannot write registers while replaying."));
|
||||
|
||||
gdb_assert (may_write_registers != 0);
|
||||
|
||||
@ -1332,7 +1332,7 @@ record_btrace_prepare_to_store (struct target_ops *ops,
|
||||
struct target_ops *t;
|
||||
|
||||
if (!record_btrace_generating_corefile
|
||||
&& record_btrace_is_replaying (ops, minus_one_ptid))
|
||||
&& record_btrace_is_replaying (ops, inferior_ptid))
|
||||
return;
|
||||
|
||||
t = ops->beneath;
|
||||
|
Loading…
x
Reference in New Issue
Block a user