diff options
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/infcmd.c | 34 | ||||
-rw-r--r-- | gdb/inflow.c | 37 |
3 files changed, 42 insertions, 37 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 033dd7d..fc55a20 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,13 @@ 2009-05-19 Pedro Alves <pedro@codesourcery.com> + * inflow.c (kill_command): Moved to infcmd.c. + (_initialize_inflow): Don't add the "kill" command or clear + inferior_ptid here. + * infcmd.c (kill_command): Moved here from inflow.c. + (_initialize_infcmd): Add the "kill" command here. + +2009-05-19 Pedro Alves <pedro@codesourcery.com> + * 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. diff --git a/gdb/infcmd.c b/gdb/infcmd.c index fcb0f91..433b0b8 100644 --- a/gdb/infcmd.c +++ b/gdb/infcmd.c @@ -2037,6 +2037,37 @@ vector_info (char *args, int from_tty) get_selected_frame (NULL), args); } +/* Kill the inferior process. Make us have no inferior. */ + +static void +kill_command (char *arg, int from_tty) +{ + /* FIXME: This should not really be inferior_ptid (or target_has_execution). + It should be a distinct flag that indicates that a target is active, cuz + some targets don't have processes! */ + + if (ptid_equal (inferior_ptid, null_ptid)) + error (_("The program is not being run.")); + if (!query (_("Kill the program being debugged? "))) + error (_("Not confirmed.")); + target_kill (); + + /* If the current target interface claims there's still execution, + then don't mess with threads of other processes. */ + if (!target_has_execution) + { + init_thread_list (); /* Destroy thread info */ + + /* Killing off the inferior can leave us with a core file. If + so, print the state we are left in. */ + if (target_has_stack) + { + printf_filtered (_("In %s,\n"), target_longname); + print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC); + } + } + bfd_cache_close_all (); +} /* Used in `attach&' command. ARG is a point to an integer representing a process id. Proceed threads of this process iff @@ -2595,6 +2626,9 @@ fully linked executable files and separately compiled object files as needed."), &showlist); set_cmd_completer (c, noop_completer); + add_com ("kill", class_run, kill_command, + _("Kill execution of program being debugged.")); + add_com ("attach", class_run, attach_command, _("\ Attach to a process or file outside of GDB.\n\ This command attaches to another target, of the same type as your last\n\ diff --git a/gdb/inflow.c b/gdb/inflow.c index f65b9c5..6ca5bd8 100644 --- a/gdb/inflow.c +++ b/gdb/inflow.c @@ -696,38 +696,6 @@ new_tty_postfork (void) } -/* Kill the inferior process. Make us have no inferior. */ - -static void -kill_command (char *arg, int from_tty) -{ - /* FIXME: This should not really be inferior_ptid (or target_has_execution). - It should be a distinct flag that indicates that a target is active, cuz - some targets don't have processes! */ - - if (ptid_equal (inferior_ptid, null_ptid)) - error (_("The program is not being run.")); - if (!query (_("Kill the program being debugged? "))) - error (_("Not confirmed.")); - target_kill (); - - /* If the current target interface claims there's still execution, - then don't mess with threads of other processes. */ - if (!target_has_execution) - { - init_thread_list (); /* Destroy thread info */ - - /* Killing off the inferior can leave us with a core file. If - so, print the state we are left in. */ - if (target_has_stack) - { - printf_filtered (_("In %s,\n"), target_longname); - print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC); - } - } - bfd_cache_close_all (); -} - /* Call set_sigint_trap when you need to pass a signal on to an attached process when handling SIGINT */ @@ -848,11 +816,6 @@ _initialize_inflow (void) add_info ("terminal", term_info, _("Print inferior's saved terminal status.")); - add_com ("kill", class_run, kill_command, - _("Kill execution of program being debugged.")); - - inferior_ptid = null_ptid; - terminal_is_ours = 1; /* OK, figure out whether we have job control. If neither termios nor |