aboutsummaryrefslogtreecommitdiff
path: root/gdb/inferior.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2009-05-18 00:58:38 +0000
committerPedro Alves <palves@redhat.com>2009-05-18 00:58:38 +0000
commit7e1789f556ec6ba5c736abcb81e0a08ba31673ab (patch)
tree0954250144b4f488a58603624f66727f7f3fd731 /gdb/inferior.c
parent7a1c0c5cb126af0e3620150235e5cdf34d5c6a69 (diff)
downloadgdb-7e1789f556ec6ba5c736abcb81e0a08ba31673ab.zip
gdb-7e1789f556ec6ba5c736abcb81e0a08ba31673ab.tar.gz
gdb-7e1789f556ec6ba5c736abcb81e0a08ba31673ab.tar.bz2
* inflow.h (our_process_group): Remove declaration.
(inferior_process_group): Delete global variable declaration. (inferior_process_group): New function declaration. * inflow.c: Include observer.h. (inferior_ttystate, our_ttystate, tflags_inferior, tflags_ours): Delete. (struct terminal_info): New struct. (our_terminal_info): New global. (inferior_process_group): New function. (inferior_thisrun_terminal): Extend description comment. (gdb_has_a_terminal): Adjust to write to our_terminal_info fields instead of globals. (terminal_init_inferior_with_pgrp): Adjust to per-inferior terminal settings. (terminal_inferior): Ditto. (terminal_ours_1): Ditto. (inflow_new_inferior, inflow_inferior_exit): New functions. (child_terminal_info): Adjust to per-inferior terminal settings. (osig_set): New global. (set_sigint_trap): Adjust to per-inferior terminal settings. Set or clear `osig_set' accordingly. (clear_sigint_trap): Check `osig_set' to decide wheater to restore SIGINT handler, instead of checking the current inferior (which may be none). (_initialize_inflow): Attach inflow_new_inferior and inflow_inferior_exit to the "new_inferior" and "inferior_exit" notifications, respectively. * inferior.h (struct terminal_info): Forward declare. (struct inferior): Add `terminal_info' field. * inferior.c (delete_inferior_1): Notify the inferior_exit observers before removing the inferior from the lists and deleting it. * inf-ptrace.c (inf_ptrace_stop): `inferior_process_group' is now a function instead of a variable. Adjust. * procfs.c (procfs_stop): Ditto.
Diffstat (limited to 'gdb/inferior.c')
-rw-r--r--gdb/inferior.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/gdb/inferior.c b/gdb/inferior.c
index e19a898..e060a1b 100644
--- a/gdb/inferior.c
+++ b/gdb/inferior.c
@@ -139,19 +139,21 @@ delete_inferior_1 (int pid, int silent)
if (!inf)
return;
- if (infprev)
- infprev->next = inf->next;
- else
- inferior_list = inf->next;
-
- free_inferior (inf);
-
arg.pid = pid;
arg.silent = silent;
iterate_over_threads (delete_thread_of_inferior, &arg);
+ /* Notify the observers before removing the inferior from the list,
+ so that the observers have a change to look it up. */
observer_notify_inferior_exit (pid);
+
+ if (infprev)
+ infprev->next = inf->next;
+ else
+ inferior_list = inf->next;
+
+ free_inferior (inf);
}
void