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

Reply via email to