Type `long` in gcc bound to machine word size and thus matches with `size_t` which is type of `xmalloc`/`malloc`. If there is a really need to support "stack" bigger than address space of process we should modify related code to process it with help of loadable (from file or whatever) pages etc.