gdb: make record-full clear async handler in wait
authorSimon Marchi <simon.marchi@efficios.com>
Thu, 4 Feb 2021 18:35:37 +0000 (13:35 -0500)
committerSimon Marchi <simon.marchi@polymtl.ca>
Thu, 4 Feb 2021 18:35:37 +0000 (13:35 -0500)
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

gdb/ChangeLog
gdb/record-full.c

index 0e617df13b2deca4f0f6bb70beed797b7ff476cc..c73a8cd9df3962fe23729fdd009c377717c77150 100644 (file)
@@ -1,3 +1,10 @@
+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):
index 247573cc5c6403fe39816506b12df770cd0d5fad..2373741470c45deb46d9e48b7dc7fc8925f5341d 100644 (file)
@@ -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)
     {