Error linking under Cygwin: fork: can't reserve memory for stack XXX, Win32 error 487
Martin Egholm Nielsen
martin@egholm-nielsen.dk
Thu Mar 3 08:42:00 GMT 2005
Hi,
>>I've ended up here after having rounded the gcc-irc-channel and the
>>crosscompiler mailing-list.
>>
>>The story:
>>
>>I have compiled a gcc crosscompiler hosted under Cygwin using Dan
>>Kegel's Crosstool scripts.
>>
>>However, as my application is growing in size (number of .o files) I
>>suddenly get the following fault message from collect2.exe when trying
>>to link them all together:
>>
>>$ powerpc-405-linux-gnu-gcj --main=foo.Main *.o
>>C:\cygwin\opt\crosstool\powerpc-405-linux-gnu\gcc-3.4.0-glibc-2.2.5\libexec\gcc\powerpc-405-linux-gnu\3.4.0\collect2.exe
>>(1740): *** fork: can't reserve memory for stack 0x40000 - 0x240000, Win32
>>error 487
>><REPEATED>
>>
>>There is roughly 600 .o files to link together.
>>
>>Andrew Haley from RedHat mentioned that
>>"There's some magic in Win32 to extend the size of a stack segment"
>>"I can't remember the command"
>>
>>Can anybody on this list help me out here?
> % gcc -v --help |& grep stack
> -fstack-limit-register=<register> Trap if the stack goes past <register>
> -fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>
> -fstack-check Insert stack checking code into the program
> -fomit-frame-pointer When possible do not generate stack frames
> -fdefer-pop Defer popping functions args from stack until later
> -fstack-checking Enable stack checking (same as `{$S+}')
> -fno-stack-checking Disable stack checking (same as `{$S-} (default)')
> -mstack-arg-probe Enable stack probing
> -mpreferred-stack-boundar Attempt to keep stack aligned to this power of 2
> --stack <size> Set size of the initial stack
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Hum, these options are not available in my crosscompiler:
$ powerpc-405-linux-gnu-gcc -v --help 2>&1 | grep stack
-fdefer-pop Defer popping functions args from stack until
-fomit-frame-pointer When possible do not generate stack frames
-fstack-check Insert stack checking code into the program
-fstack-limit This switch lacks documentation
-fstack-limit-register=<register> Trap if the stack goes past <register>
-fstack-limit-symbol=<name> Trap if the stack goes past symbol <name>
--execstack require executable stack for this object
--noexecstack don't require executable stack for this object
-z execstack Mark executable as requiring executable stack
-z noexecstack Mark executable as not requiring executable stack
-z execstack Mark executable as requiring executable stack
-z noexecstack Mark executable as not requiring executable stack
-z execstack Mark executable as requiring executable stack
-z noexecstack Mark executable as not requiring executable stack
> However, this may actually also be a sign that you need to run rebaseall.
I've tried running rebaseall without any errors, but also without any
changes in the above behavior...
// Martin
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
More information about the Cygwin
mailing list