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


I'll happily test a patch to that file for you...the only box at my house runs Windows... =-O

Ian Lance Taylor wrote:

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]