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 is a fixed 128 KiB
in size, and is not executable, by default.