diff options
author | Ian Lance Taylor <ian@airs.com> | 2006-08-27 23:50:30 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2006-08-27 23:50:30 +0000 |
commit | 5317e1c7a911933eb699a349ab499e13f24ae7be (patch) | |
tree | 605a7786db7fb3a02245d989ed8b13db7d8bdb92 /libiberty/pex-common.c | |
parent | 022d41663ddcc03460e411e390eeb0ccada393d5 (diff) | |
download | gcc-5317e1c7a911933eb699a349ab499e13f24ae7be.zip gcc-5317e1c7a911933eb699a349ab499e13f24ae7be.tar.gz gcc-5317e1c7a911933eb699a349ab499e13f24ae7be.tar.bz2 |
re PR driver/27622 (gcc hang when compiling with -pipe)
PR driver/27622
* pex-common.h (struct pex_funcs): Add toclose parameter to
exec_child field.
* pex-common.c (pex_run_in_environment): Pass toclose to
exec_child.
* pex-djgpp.c (pex_djgpp_exec_child): Add toclose parameter.
* pex-unix.c (pex_unix_exec_child): Likewise.
* pex-msdos.c (pex_msdos_exec_child): Likewise.
* pex-win32.c (pex_win32_exec_child): Likewise.
From-SVN: r116494
Diffstat (limited to 'libiberty/pex-common.c')
-rw-r--r-- | libiberty/pex-common.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/libiberty/pex-common.c b/libiberty/pex-common.c index 3daa638..bb127f2 100644 --- a/libiberty/pex-common.c +++ b/libiberty/pex-common.c @@ -157,6 +157,7 @@ pex_run_in_environment (struct pex_obj *obj, int flags, const char *executable, char *outname; int outname_allocated; int p[2]; + int toclose; long pid; in = -1; @@ -297,10 +298,18 @@ pex_run_in_environment (struct pex_obj *obj, int flags, const char *executable, } } + /* If we are using pipes, the child process has to close the next + input pipe. */ + + if ((obj->flags & PEX_USE_PIPES) == 0) + toclose = -1; + else + toclose = obj->next_input; + /* Run the program. */ pid = obj->funcs->exec_child (obj, flags, executable, argv, env, - in, out, errdes, &errmsg, err); + in, out, errdes, toclose, &errmsg, err); if (pid < 0) goto error_exit; |