[binutils-gdb] gdb: make record-btrace clear event handler in wait

Simon Marchi simark@sourceware.org
Thu Feb 4 18:39:55 GMT 2021


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=85d3ad8e0b44832e7726d20eaf456051b5262b43

commit 85d3ad8e0b44832e7726d20eaf456051b5262b43
Author: Simon Marchi <simon.marchi@efficios.com>
Date:   Thu Feb 4 13:35:09 2021 -0500

    gdb: make record-btrace clear event handler in wait
    
    For the same reason explained in the previous patch (which was for the
    remote target), move clearing of the async event handler of the
    record-btrace target to the wait method.
    
    The record-btrace target already re-sets its async event handler in its
    wait method, so that part doesn't need to be changed:
    
        /* In async mode, we need to announce further events.  */
        if (target_is_async_p ())
          record_btrace_maybe_mark_async_event (moving, no_history);
    
    gdb/ChangeLog:
    
            * record-btrace.c (record_btrace_handle_async_inferior_event):
            Don't clear async event handler.
            (record_btrace_target::wait): Clear async event handler at
            beginning.
    
    Change-Id: Ib32087a81bf94f1b884a938c8167ac8bbe09e362

Diff:
---
 gdb/ChangeLog       | 7 +++++++
 gdb/record-btrace.c | 4 +++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c8cae1c77da..0e617df13b2 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+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
+	beginning.
+
 2021-02-04  Simon Marchi  <simon.marchi@efficios.com>
 
 	* remote.c (remote_target::wait): Clear async event handler at
diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c
index ea339b865b3..ac51ff2bf49 100644
--- a/gdb/record-btrace.c
+++ b/gdb/record-btrace.c
@@ -325,7 +325,6 @@ record_btrace_auto_disable (void)
 static void
 record_btrace_handle_async_inferior_event (gdb_client_data data)
 {
-  clear_async_event_handler (record_btrace_async_inferior_event_handler);
   inferior_event_handler (INF_REG_EVENT);
 }
 
@@ -2532,6 +2531,9 @@ record_btrace_target::wait (ptid_t ptid, struct target_waitstatus *status,
   std::vector<thread_info *> moving;
   std::vector<thread_info *> no_history;
 
+  /* Clear this, if needed we'll re-mark it below.  */
+  clear_async_event_handler (record_btrace_async_inferior_event_handler);
+
   DEBUG ("wait %s (0x%x)", target_pid_to_str (ptid).c_str (),
 	 (unsigned) options);


More information about the Gdb-cvs mailing list