diff options
author | Pedro Alves <palves@redhat.com> | 2009-05-19 02:46:45 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2009-05-19 02:46:45 +0000 |
commit | 191c4426c1ffa97a8b818c4d4280eb095de811eb (patch) | |
tree | 203f7583b1947c4f3066132d534b7fe7f3e604b4 /gdb/inf-ptrace.c | |
parent | b523320162a0e6d398ef6ebb000f9badeaa9663a (diff) | |
download | gdb-191c4426c1ffa97a8b818c4d4280eb095de811eb.zip gdb-191c4426c1ffa97a8b818c4d4280eb095de811eb.tar.gz gdb-191c4426c1ffa97a8b818c4d4280eb095de811eb.tar.bz2 |
* fork-child.c: Don't include frame.h. Include terminal.h.
(fork_inferior): Call new_tty_postfork after forking adn adding
the child to the inferior list.
* inferior.h (new_tty_prefork, gdb_has_a_terminal): Don't declare
here.
* inflow.c (struct terminal_info): Remove const qualifier from
`run_terminal' field.
(inferior_thisrun_terminal): Tweak comment.
(inflow_inferior_exit): Release the `run_terminal' field.
(copy_terminal_info): New function.
(new_tty_postfork): New function.
* terminal.h (new_tty_prefork, new_tty, new_tty_postfork,
(copy_terminal_info, gdb_has_a_terminal, gdb_setpgid): Declare.
* inf-ptrace.c: Include terminal.h.
(inf_ptrace_follow_fork): Copy the parent's terminal info to the
child.
* linux-nat.c: Include terminal.h.
(linux_child_follow_fork): Copy the parent's terminal info to the
child.
* inf-ttrace.c: Include terminal.h.
(inf_ttrace_follow_fork): Copy the parent's terminal info to the
child.
Diffstat (limited to 'gdb/inf-ptrace.c')
-rw-r--r-- | gdb/inf-ptrace.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/gdb/inf-ptrace.c b/gdb/inf-ptrace.c index aff6038..d9f7338 100644 --- a/gdb/inf-ptrace.c +++ b/gdb/inf-ptrace.c @@ -23,6 +23,7 @@ #include "command.h" #include "inferior.h" #include "inflow.h" +#include "terminal.h" #include "gdbcore.h" #include "regcache.h" @@ -74,14 +75,20 @@ inf_ptrace_follow_fork (struct target_ops *ops, int follow_child) CORE_ADDR step_range_start = last_tp->step_range_start; CORE_ADDR step_range_end = last_tp->step_range_end; struct frame_id step_frame_id = last_tp->step_frame_id; - int attach_flag = find_inferior_pid (pid)->attach_flag; - struct inferior *inf; + struct inferior *parent_inf, *child_inf; struct thread_info *tp; /* Otherwise, deleting the parent would get rid of this breakpoint. */ last_tp->step_resume_breakpoint = NULL; + parent_inf = find_inferior_pid (pid); + + /* Add the child. */ + child_inf = add_inferior (fpid); + child_inf->attach_flag = parent_inf->attach_flag; + copy_terminal_info (child_inf, parent_inf); + /* Before detaching from the parent, remove all breakpoints from it. */ remove_breakpoints (); @@ -95,9 +102,6 @@ inf_ptrace_follow_fork (struct target_ops *ops, int follow_child) /* Delete the parent. */ detach_inferior (pid); - /* Add the child. */ - inf = add_inferior (fpid); - inf->attach_flag = attach_flag; tp = add_thread_silent (inferior_ptid); tp->step_resume_breakpoint = step_resume_breakpoint; |