This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


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: CT 0.29 - stuck compiling gcc 4.0 glibc 2.2.5 ppc405: execvp: /bin/sh: Resource temporarily unavailable


On Fri, Mar 25, 2005 at 07:08:56PM +0100, Martin Egholm Nielsen wrote:
>>>>>I'm almost there - but it gets stuck when it should install gcc's 
>>>>>multilibs.
>>>>>Anybody got a clue to what causes the unavailability?
>>>>>make[4]: execvp: /bin/sh: Resource temporarily unavailable
>>>>>make[4]: *** [all-multi] Error 127
>>>>>make[4]: Leaving directory 
>>>>>`/cygdrive/c/DATA/crosstool-0.29/build/powerpc-405-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/build-gcc/powerpc-405-linux-gnu/nof/zlib' 
>>>>This old thread reports a similar problem:
>>>>http://sources.redhat.com/ml/cygwin/2001-07/msg01333.html
>>>>He blames the command length when running under Cygwin...
>>>>Unfortunately there is no solution to the problem - other than changing 
>>>>to Linux...
>>>
>>>The limit appears to be enforced in winsup/cygwin/spawn.cc:
>>>static int __stdcall
>>>spawn_guts (const char * prog_arg, const char *const *argv,
>>>          const char *const envp[], int mode)
>>>{
>>>    ...
>>>    if (one_line.ix > 32767)
>>>      {
>>>        debug_printf ("Command line too long (>32K), return E2BIG");
>>>        set_errno (E2BIG);
>>>        return -1;
>>>      }
>>>
>>>msdn says in
>>>http://msdn.microsoft.com/library/en-us/dllproc/base/createprocess.asp
>>>
>>>lpCommandLine
>>>  [in, out] Pointer to a null-terminated string that specifies the 
>>>  command line to execute.
>>>      The maximum length of this string is 32K characters.
>>>      Windows 2000:  The maximum length of this string is MAX_PATH 
>>>      characters.
>>>
>>>So it appears to be a Windows limitation, not a Cygwin one.
>>>
>>>You have a couple options, in increasing order of difficulty:
>>>
>>>1) switch to linux or some other real OS, like mac os x (putty is your 
>>>friend, you can keep
>>>your windows workstation, just remote log in to the other box)
>>>2) cross-compile the cygwin toolchain from linux
>>>3) patch gcc's build to use shorter commandlines
>>>4) patch cygwin to bypass the windows commandline mechanism
>>
>>
>>5) cygwin already bypasses windows command line mechanism.  You just have
>>   to tell it to assume that the executables in /bin (or wherever) are
>>   100% pure cygwin executables.  See "man mount".
>>
>>   mount -f -X c:\cygwin\bin /bin
>>   mount -f -X c:\cygwin\bin /usr/bin
>>   mount -f -x c:\cygwin\bin\strace.exe /bin/strace.exe       # buit with 
>>   -mno-cygwin
>>   mount -f -x c:\cygwin\bin\strace.exe /usr/bin/strace.exe   # buit with 
>>   -mno-cygwin
>>   mount -f -x c:\cygwin\bin\strace.exe /bin/cygcheck.exe     # buit with 
>>   -mno-cygwin
>>   mount -f -x c:\cygwin\bin\strace.exe /usr/bin/cygcheck.exe # buit with 
>>   -mno-cygwin
>>
>>   This will bypass the 32K limitation in windows for command line and 
>>   similar
>>   limitations for environment variables.
>
>>mount -f -x c:\cygwin\bin\strace.exe /bin/cygcheck.exe # buit with 
>>-mno-cygwin
>>mount -f -x c:\cygwin\bin\strace.exe /usr/bin/cygcheck.exe # buit with
>-mno-cygwin
>Should these in fact be "c:\cygwin\bin\cygcheck.exe" instead?
>I'm running it at the moment as you stated (4 x strace.exe)... I'll 
>return with the result in a couple of hours when it gets to the point.

yes.  Cut/paste error.

>Btw, it should be "\\" in order to escape the backslash...

Not if you're doing it from the windows command prompt.

I guess I should have added a disclaimer that these commands should be
used as a reference not taken verbatim.

cgf

------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com


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