Search code examples
macosldcompiler-optionsstack-size

How do I increase the stack size when compiling with Clang on OS X?


Can I specify the stack size with clang++? I can't find any compiler options that would allow me to do so. I'm using OS X.

Note: This question specifically refers to Clang, not the GCC compiler.


Solution

  • The linker, rather than the compiler, is responsible for setting the stack size of the main thread. The man page for ld contains the following:

    -stack_size size
        Specifies the maximum stack size for the main thread in a program. Without this
        option a program has a 8MB stack. The argument size is a hexadecimal number with
        an optional leading 0x. The size should be an even multiple of 4KB, that is the
        last three hexadecimal digits should be zero.
    

    For instance, to specify a 16MB stack you could do the following:

    mrowe@apollo:~$ cc -Wl,-stack_size -Wl,0x1000000 -o test test.m
    mrowe@apollo:~$ otool -lV test | grep stack
     stacksize 16777216
    

    Note the -Wl, prefix on the arguments passed to cc to have it pass them on to the linker.