aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@efficios.com>2021-02-04 13:35:37 -0500
committerSimon Marchi <simon.marchi@polymtl.ca>2021-02-04 13:35:37 -0500
commitfdbc5215e756e75cdda894b4d84150de35438061 (patch)
tree43ead1a124f2327f2befe458ee2196f77f0ea62c
parent85d3ad8e0b44832e7726d20eaf456051b5262b43 (diff)
downloadgdb-fdbc5215e756e75cdda894b4d84150de35438061.zip
gdb-fdbc5215e756e75cdda894b4d84150de35438061.tar.gz
gdb-fdbc5215e756e75cdda894b4d84150de35438061.tar.bz2
gdb: make record-full clear async handler in wait
For the same reason explained in the previous patch (which was for the record-btrace target), move clearing of the async event handler of the record-full target to the wait method. I'm not sure if/where that target needs to re-set its async event handler in the wait method. Since it only supports a single thread, there probably can't be multiple events to report at the same time. gdb/ChangeLog: * record-full.c (record_full_async_inferior_event_handler): Don't clear async event handler. (record_full_base_target::wait): Clear async event handler at beginning. Change-Id: I146fbdb53d99e3a32766ac7cd337ac5ed7fd9adf
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/record-full.c3
2 files changed, 9 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 0e617df..c73a8cd 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@
2021-02-04 Simon Marchi <simon.marchi@efficios.com>
+ * record-full.c (record_full_async_inferior_event_handler):
+ Don't clear async event handler.
+ (record_full_base_target::wait): Clear async event handler at
+ beginning.
+
+2021-02-04 Simon Marchi <simon.marchi@efficios.com>
+
* record-btrace.c (record_btrace_handle_async_inferior_event):
Don't clear async event handler.
(record_btrace_target::wait): Clear async event handler at
diff --git a/gdb/record-full.c b/gdb/record-full.c
index 247573c..2373741 100644
--- a/gdb/record-full.c
+++ b/gdb/record-full.c
@@ -903,7 +903,6 @@ static struct async_event_handler *record_full_async_inferior_event_token;
static void
record_full_async_inferior_event_handler (gdb_client_data data)
{
- clear_async_event_handler (record_full_async_inferior_event_token);
inferior_event_handler (INF_REG_EVENT);
}
@@ -1454,6 +1453,8 @@ record_full_base_target::wait (ptid_t ptid, struct target_waitstatus *status,
{
ptid_t return_ptid;
+ clear_async_event_handler (record_full_async_inferior_event_token);
+
return_ptid = record_full_wait_1 (this, ptid, status, options);
if (status->kind != TARGET_WAITKIND_IGNORE)
{