This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Error linking under Cygwin: fork: can't reserve memory for stack XXX, Win32 error 487
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/