On 12/2/2010 10:33 AM, Andrew Wiley wrote:
On Wed, Dec 1, 2010 at 7:14 PM, Mike Parker <aldac...@gmail.com
<mailto:aldac...@gmail.com>> wrote:
On 12/2/2010 6:12 AM, Andrew Wiley wrote:
On Wed, Dec 1, 2010 at 2:36 PM, bearophile
<bearophileh...@lycos.com <mailto:bearophileh...@lycos.com>
<mailto:bearophileh...@lycos.com
<mailto:bearophileh...@lycos.com>>> wrote:
Franciszek Czekala:
> How do you set the stack size for D programs?
On Windows with DMD this is how to set the max stack size to
about
1.5 GB of the "test.d" module:
dmd -L/STACK:1500000000 test.d
(I'd like D to have a standard syntax (maybe a pragma(...))
to tell
the other parts of the compilation chain how much stack to use).
If the stack size is only set by the executable on Windows, I
don't see
how that would be useful.
It's not set by DMD, but by the linker. You need to pass the
appropriate flag to the linker on each platform via the -L command
line option. bearophile's example is for OPTLINK. On platforms where
DMD is backed by the gcc toolchain, you should be able to use
dmd -L--stack 1500000000 test.d
$ ld --stack
ld: unrecognized option '--stack'
ld: use the --help option for usage information
The linker doesn't set the stack size on Linux/Unix (seems like OSX is
an exception). You set the stack size in the environment with 'ulimit -s'
I got that from the ld man page [1]. But on checking again, I see this:
[This option is specific to the i386 PE targeted port of the linker]
Sorry about that.
[1] http://linux.die.net/man/1/ld