diff options
author | Pedro Alves <palves@redhat.com> | 2013-10-24 16:10:05 +0100 |
---|---|---|
committer | Tom Tromey <tromey@sourceware.org> | 2013-10-25 14:02:59 +0000 |
commit | 98882a26513e25b2161b41dfd4bed97b59b2c01a (patch) | |
tree | b93c6f85e6e42780f974f82faff02d1eaf9d6db5 /gdb/fork-child.c | |
parent | c9737c08e7f804dfa80f71b74cb5678d0b69308e (diff) | |
download | gdb-98882a26513e25b2161b41dfd4bed97b59b2c01a.zip gdb-98882a26513e25b2161b41dfd4bed97b59b2c01a.tar.gz gdb-98882a26513e25b2161b41dfd4bed97b59b2c01a.tar.bz2 |
Make STARTUP_WITH_SHELL a runtime toggle -- add new "set/show startup-with-shell" option.
Occasionaly we hear about people having problems with GDB not being
able to start programs (with "run"/"start"). GDB spawns a shell to
start the program, and most often, it'll be the case that the problem
is actually with the user's shell setup.
GDB has code to disable the use of the shell to start programs.
That's the STARTUP_WITH_SHELL macro that native targets could set to 0
in their nm.h file (though no target actually uses it nowadays).
This patch makes that setting a run-time knob instead. This will be
useful to quickly diagnose such shell issues, and might also come in
handy at other times (such as when debugging the shell itself, if you
don't have a different shell handy).
gdb/
2013-10-24 Pedro Alves <palves@redhat.com>
* NEWS (New options): Mention set/show startup-with-shell.
* config/alpha/nm-osf3.h (START_INFERIOR_TRAPS_EXPECTED): Set to 2
instead of 3.
* fork-child.c (fork_inferior, startup_inferior): Handle 'set
startup-with-shell'.
(show_startup_with_shell): New function.
(_initialize_fork_child): Register the set/show startup-with-shell
commands.
* inf-ptrace.c (inf_ptrace_create_inferior): Remove comment.
* inf-ttrace.c (inf_ttrace_him): Remove comment.
* procfs.c (procfs_init_inferior): Remove comment.
* infcmd.c (startup_with_shell): New global.
* inferior.h (startup_with_shell): Declare global.
(STARTUP_WITH_SHELL): Delete.
(START_INFERIOR_TRAPS_EXPECTED): Set to 1 by default instead of 2.
gdb/doc/
2013-10-24 Pedro Alves <palves@redhat.com>
* gdb.texinfo (Starting): Document set/show startup-with-shell.
Diffstat (limited to 'gdb/fork-child.c')
-rw-r--r-- | gdb/fork-child.c | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/gdb/fork-child.c b/gdb/fork-child.c index 6820872..a1e4902 100644 --- a/gdb/fork-child.c +++ b/gdb/fork-child.c @@ -150,11 +150,11 @@ fork_inferior (char *exec_file_arg, char *allargs, char **env, if (exec_file == 0) exec_file = get_exec_file (1); - /* STARTUP_WITH_SHELL is defined in inferior.h. If 0,e we'll just - do a fork/exec, no shell, so don't bother figuring out what - shell. */ + /* 'startup_with_shell' is declared in inferior.h and bound to the + "set startup-with-shell" option. If 0, we'll just do a + fork/exec, no shell, so don't bother figuring out what shell. */ shell_file = shell_file_arg; - if (STARTUP_WITH_SHELL) + if (startup_with_shell) { /* Figure out what shell to start up the user program under. */ if (shell_file == NULL) @@ -419,6 +419,12 @@ startup_inferior (int ntraps) int terminal_initted = 0; ptid_t resume_ptid; + if (startup_with_shell) + { + /* One trap extra for exec'ing the shell. */ + pending_execs++; + } + if (target_supports_multi_process ()) resume_ptid = pid_to_ptid (ptid_get_pid (inferior_ptid)); else @@ -533,6 +539,15 @@ unset_exec_wrapper_command (char *args, int from_tty) exec_wrapper = NULL; } +static void +show_startup_with_shell (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, + _("Use of shell to start subprocesses is %s.\n"), + value); +} + /* Provide a prototype to silence -Wmissing-prototypes. */ extern initialize_file_ftype _initialize_fork_child; @@ -550,4 +565,12 @@ Show the wrapper for running programs."), NULL, add_cmd ("exec-wrapper", class_run, unset_exec_wrapper_command, _("Disable use of an execution wrapper."), &unsetlist); + + add_setshow_boolean_cmd ("startup-with-shell", class_support, + &startup_with_shell, _("\ +Set use of shell to start subprocesses. The default is on."), _("\ +Show use of shell to start subprocesses."), NULL, + NULL, + show_startup_with_shell, + &setlist, &showlist); } |