diff options
author | Vladimir Prus <vladimir@codesourcery.com> | 2008-11-17 12:28:05 +0000 |
---|---|---|
committer | Vladimir Prus <vladimir@codesourcery.com> | 2008-11-17 12:28:05 +0000 |
commit | e7869269d3657b94d83ea440569ebdcd21c56189 (patch) | |
tree | 0607f99fd1722189d40b503456365001a2233ff0 | |
parent | c52c9073d08225f822d625a8d76819ba5a0470bf (diff) | |
download | gdb-e7869269d3657b94d83ea440569ebdcd21c56189.tar.gz |
Notification for attach/detach.
* inferior.c: Call the process observers.
* mi/mi-interp.c (mi_new_inferior, mi_inferior_exit): New.
(mi_interpreter_init): Register the above.
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/doc/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/doc/observer.texi | 10 | ||||
-rw-r--r-- | gdb/inferior.c | 5 | ||||
-rw-r--r-- | gdb/mi/mi-interp.c | 24 |
5 files changed, 51 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 99bfda122df..a224e303e20 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,13 @@ 2008-11-17 Vladimir Prus <vladimir@codesourcery.com> + Notification for attach/detach. + + * inferior.c: Call the process observers. + * mi/mi-interp.c (mi_new_inferior, mi_inferior_exit): New. + (mi_interpreter_init): Register the above. + +2008-11-17 Vladimir Prus <vladimir@codesourcery.com> + Implement -list-thread-groups. * thread.c (print_thread_info): New parameter pid, to print diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 363ee18e2ec..18f665000c1 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,7 @@ +2008-11-17 Vladimir Prus <vladimir@codesourcery.com> + + * observer.texi (new_inferior, inferior_exit): New observers. + 2008-10-27 Pedro Alves <pedro@codesourcery.com> * gdbint.texinfo (Adding a New Target): Don't mention TDEPFILES, diff --git a/gdb/doc/observer.texi b/gdb/doc/observer.texi index f76bf9ff366..636658af66b 100644 --- a/gdb/doc/observer.texi +++ b/gdb/doc/observer.texi @@ -187,3 +187,13 @@ a pointer to the new architecture. The thread's ptid has changed. The @var{old_ptid} parameter specifies the old value, and @var{new_ptid} specifies the new value. @end deftypefun + +@deftypefun void new_inferior (int @var{pid}) +@value{GDBN} has attached to a new inferior identified by @var{pid}. +@end deftypefun + +@deftypefun void inferior_exit (int @var{pid}) +Either @value{GDBN} detached from the inferior, or the inferior +exited. The argument @var{pid} identifies the inferior. +@end deftypefun + diff --git a/gdb/inferior.c b/gdb/inferior.c index 9fec4cc2887..24f8fa6b5d8 100644 --- a/gdb/inferior.c +++ b/gdb/inferior.c @@ -24,6 +24,7 @@ #include "gdbcmd.h" #include "gdbthread.h" #include "ui-out.h" +#include "observer.h" void _initialize_inferiors (void); @@ -91,6 +92,8 @@ add_inferior (int pid) { struct inferior *inf = add_inferior_silent (pid); + observer_notify_new_inferior (pid); + if (print_inferior_events) printf_unfiltered (_("[New inferior %d]\n"), pid); @@ -147,6 +150,8 @@ delete_inferior_1 (int pid, int silent) arg.silent = silent; iterate_over_threads (delete_thread_of_inferior, &arg); + + observer_notify_inferior_exit (pid); } void diff --git a/gdb/mi/mi-interp.c b/gdb/mi/mi-interp.c index df0d3dfdab3..31216040b04 100644 --- a/gdb/mi/mi-interp.c +++ b/gdb/mi/mi-interp.c @@ -69,6 +69,8 @@ static void mi_on_normal_stop (struct bpstats *bs); static void mi_new_thread (struct thread_info *t); static void mi_thread_exit (struct thread_info *t); +static void mi_new_inferior (int pid); +static void mi_inferior_exit (int pid); static void mi_on_resume (ptid_t ptid); static void * @@ -94,6 +96,8 @@ mi_interpreter_init (int top_level) { observer_attach_new_thread (mi_new_thread); observer_attach_thread_exit (mi_thread_exit); + observer_attach_new_inferior (mi_new_inferior); + observer_attach_inferior_exit (mi_inferior_exit); observer_attach_normal_stop (mi_on_normal_stop); observer_attach_target_resumed (mi_on_resume); } @@ -303,6 +307,26 @@ mi_thread_exit (struct thread_info *t) } static void +mi_new_inferior (int pid) +{ + struct mi_interp *mi = top_level_interpreter_data (); + target_terminal_ours (); + fprintf_unfiltered (mi->event_channel, "thread-group-created,id=\"%d\"", + pid); + gdb_flush (mi->event_channel); +} + +static void +mi_inferior_exit (int pid) +{ + struct mi_interp *mi = top_level_interpreter_data (); + target_terminal_ours (); + fprintf_unfiltered (mi->event_channel, "thread-group-exited,id=\"%d\"", + pid); + gdb_flush (mi->event_channel); +} + +static void mi_on_normal_stop (struct bpstats *bs) { /* Since this can be called when CLI command is executing, |