On 12/2/2010 10:33 AM, Andrew Wiley wrote:
On Wed, Dec 1, 2010 at 7:14 PM, Mike Parker <[email protected] <mailto:[email protected]>> wrote:On 12/2/2010 6:12 AM, Andrew Wiley wrote: On Wed, Dec 1, 2010 at 2:36 PM, bearophile <[email protected] <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>>> 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
