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

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.

Leave a Comment