forked from Imagelibrary/binutils-gdb
* 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.
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user