Loaded programs are loaded at address 0, and they are free to allocate themselves at nearby offsets.
ld.so and entities like stacks, anonymous memory regions, and others,
will be randomized on load time following
ASLR,
and must not be relied upon. It is up to ld.so to optionally place
additionally loaded libraries at random offsets.
The stack size is not specified as part of defined kernel behaviour, and is not executable by default.