This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Problem with pex-win32.c


Mark Mitchell <mark@codesourcery.com> writes:

> The new pex-win32.c code doesn't operate correctly when used for
> MinGW-hosted tools invoked from a Cygwin window.  In particular, process
> creation ("gcc" invoking "as", say) results in a DOS console window
> popping up.  When invoked from a DOS window, things are fine.
> 
> The reason for this problem is that the current code uses MSVCRT's spawn
> to create the process, and that function doesn't provide fine enough
> control.  You have to use CreateProcess to make this work as desired.
> When invoking CreateProcess, you must set bInheritHandle to TRUE and
> pass a long a STARTUPINFO structure with dwFlags set to
> STARTF_USESTDHANDLES, and the various hStd* handle fields set to the
> values from the calling process.  (I'm pretty sure that CodeSourcery
> posted patches that did that at one point; they were in our 3.4-based
> toolchains.)
> 
> You might think that linking with -mwindows would work, and, indeed that
> avoids the DOS windows popping up in Cygwin -- but they you get no
> output at all under Windows.
> 
> I guess I have two questions: (a) do you feel like fixing this, and (b)
> if not, do you have any objection to using CreateProcess?

I just copied the use of spawn from the earlier pex-win32
implementation.  The pex_win32_exec_child function is basically
exactly the same code as before.  I certainly have no objection to
using CreateProcess instead.

I could try a patch, but I can't test it, because I don't have a
Windows system.  So it might be better if somebody else tackled it.

Ian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]