Re: [RFA] Use vfork in shell_escape

Daniel Jacobowitz
2002-11-05T21:43:20Z

On Mon, Oct 21, 2002 at 09:52:05PM -0400, Daniel Jacobowitz wrote:
> This patch is pretty obvious. I couldn't figure out why my machine was
> running out of memory; forking GDB to run an 'ls' during the maint.exp tests
> can be a bit heavy, since it may have all of glibc's debug info loaded.
> This patch seems logical to me... OK to commit?

Updated as suggested, to use gdb_vfork.h. Fernando, is this OK?

--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer

2002-11-05 Daniel Jacobowitz <drow@mvista.com>

* Makefile.in (cli-cmds.o): Add $(gdb_vfork_h).
* cli/cli-cmds.c: Include "gdb_vfork.h".
(shell_escape): Use vfork.

Index: Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/Makefile.in,v
retrieving revision 1.274
diff -u -p -r1.274 Makefile.in
--- Makefile.in 2 Nov 2002 15:13:34 -0000 1.274
+++ Makefile.in 5 Nov 2002 21:40:52 -0000
@@ -2311,7 +2311,7 @@ cli-cmds.o: $(srcdir)/cli/cli-cmds.c $(d
$(gdb_wait_h) $(gdb_regex_h) $(gdb_string_h) $(filenames_h) \
$(ui_out_h) $(top_h) $(cli_decode_h) $(cli_script_h) \
$(cli_setshow_h) $(cli_cmds_h) $(source_h) $(linespec_h) \
- $(expression_h) $(language_h) $(objfiles_h)
+ $(expression_h) $(language_h) $(objfiles_h) $(gdb_vfork_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/cli/cli-cmds.c
cli-decode.o: $(srcdir)/cli/cli-decode.c $(defs_h) $(symtab_h) \
$(gdb_regex_h) $(gdb_string_h) $(ui_out_h) $(cli_cmds_h) \
Index: cli/cli-cmds.c
===================================================================
RCS file: /cvs/src/src/gdb/cli/cli-cmds.c,v
retrieving revision 1.22
diff -u -p -r1.22 cli-cmds.c
--- cli/cli-cmds.c 22 Sep 2002 22:18:41 -0000 1.22
+++ cli/cli-cmds.c 5 Nov 2002 21:40:53 -0000
@@ -25,6 +25,7 @@
#include "gdb_wait.h" /* For shell escape implementation */
#include "gdb_regex.h" /* Used by apropos_command */
#include "gdb_string.h"
+#include "gdb_vfork.h"
#include "linespec.h"
#include "expression.h"
#include "language.h"
@@ -517,7 +518,7 @@ shell_escape (char *arg, int from_tty)
else
p++; /* Get past '/' */

- if ((pid = fork ()) == 0)
+ if ((pid = vfork ()) == 0)
{
if (!arg)
execl (user_shell, p, 0);