diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2023-04-21 09:45:30 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@efficios.com> | 2023-05-30 15:07:26 -0400 |
commit | 44fbffc69d68e35f0e0bdbe8f6f186dc79924d11 (patch) | |
tree | 71121fe533060c428bb1f2c521f5dfd00380f50f /gdb/mi | |
parent | 2646bfa763e890c41474206344e3b02e1648c765 (diff) | |
download | fsf-binutils-gdb-44fbffc69d68e35f0e0bdbe8f6f186dc79924d11.zip fsf-binutils-gdb-44fbffc69d68e35f0e0bdbe8f6f186dc79924d11.tar.gz fsf-binutils-gdb-44fbffc69d68e35f0e0bdbe8f6f186dc79924d11.tar.bz2 |
gdb: add interp::on_record_changed method
Same idea as previous patches, but for record_changed
Change-Id: I5eeeacd703af8401c315060514c94e8e6439cc40
Diffstat (limited to 'gdb/mi')
-rw-r--r-- | gdb/mi/mi-interp.c | 63 | ||||
-rw-r--r-- | gdb/mi/mi-interp.h | 2 |
2 files changed, 24 insertions, 41 deletions
diff --git a/gdb/mi/mi-interp.c b/gdb/mi/mi-interp.c index c2185ef..751fef4 100644 --- a/gdb/mi/mi-interp.c +++ b/gdb/mi/mi-interp.c @@ -60,8 +60,6 @@ static int mi_interp_query_hook (const char *ctlstr, va_list ap) static void mi_insert_notify_hooks (void); static void mi_remove_notify_hooks (void); -static void mi_record_changed (struct inferior*, int, const char *, - const char *); static void mi_on_resume (ptid_t ptid); static void mi_solib_loaded (struct so_list *solib); static void mi_solib_unloaded (struct so_list *solib); @@ -312,48 +310,32 @@ mi_interp::on_thread_exited (thread_info *t, int silent) gdb_flush (this->event_channel); } -/* Emit notification on changing the state of record. */ - -static void -mi_record_changed (struct inferior *inferior, int started, const char *method, - const char *format) +void +mi_interp::on_record_changed (inferior *inferior, int started, + const char *method, const char *format) { - SWITCH_THRU_ALL_UIS () - { - struct mi_interp *mi = as_mi_interp (top_level_interpreter ()); - - if (mi == NULL) - continue; - - target_terminal::scoped_restore_terminal_state term_state; - target_terminal::ours_for_output (); + target_terminal::scoped_restore_terminal_state term_state; + target_terminal::ours_for_output (); - if (started) - { - if (format != NULL) - { - gdb_printf (mi->event_channel, - "record-started,thread-group=\"i%d\"," - "method=\"%s\",format=\"%s\"", - inferior->num, method, format); - } - else - { - gdb_printf (mi->event_channel, - "record-started,thread-group=\"i%d\"," - "method=\"%s\"", - inferior->num, method); - } - } + if (started) + { + if (format != NULL) + gdb_printf (this->event_channel, + "record-started,thread-group=\"i%d\"," + "method=\"%s\",format=\"%s\"", + inferior->num, method, format); else - { - gdb_printf (mi->event_channel, - "record-stopped,thread-group=\"i%d\"", - inferior->num); - } - - gdb_flush (mi->event_channel); + gdb_printf (this->event_channel, + "record-started,thread-group=\"i%d\"," + "method=\"%s\"", + inferior->num, method); } + else + gdb_printf (this->event_channel, + "record-stopped,thread-group=\"i%d\"", + inferior->num); + + gdb_flush (this->event_channel); } void @@ -1110,7 +1092,6 @@ _initialize_mi_interp () interp_factory_register (INTERP_MI4, mi_interp_factory); interp_factory_register (INTERP_MI, mi_interp_factory); - gdb::observers::record_changed.attach (mi_record_changed, "mi-interp"); gdb::observers::target_resumed.attach (mi_on_resume, "mi-interp"); gdb::observers::solib_loaded.attach (mi_solib_loaded, "mi-interp"); gdb::observers::solib_unloaded.attach (mi_solib_unloaded, "mi-interp"); diff --git a/gdb/mi/mi-interp.h b/gdb/mi/mi-interp.h index 0e8804d..126d78d 100644 --- a/gdb/mi/mi-interp.h +++ b/gdb/mi/mi-interp.h @@ -56,6 +56,8 @@ public: void on_inferior_appeared (inferior *inf) override; void on_inferior_disappeared (inferior *inf) override; void on_inferior_removed (inferior *inf) override; + void on_record_changed (inferior *inf, int started, const char *method, + const char *format) override; /* MI's output channels */ mi_console_file *out; |