Stack layout is well documented in many ways. Especially for x86 systems as there were numerous tutorials on how to exploit stack overflow on old 32-bit systems many years ago.
So far we can know that on a 32-bit system, the user stack starts from 0xc0000000 address (which is the limit between usermode and kernelmode).
This address is not the same if we take an Elf32 running on a x86-64 linux system.
I cannot find this address but I can figure out it is 0xffffe000 thanks to gdb:
(gdb) x $esp
0xffffd4bc: 0xf7e16a83
(gdb) x/w 0xffffdffc
0xffffdffc: 0x00000000
(gdb) x/w 0xffffe000
0xffffe000: Cannot access memory at address 0xffffe000
We can actually see that the 0xffffe000 address points to an invalid location (or at least the process doesn't have proper permission to access this memory page).
Yet I cannot especially find a relevant source that tells us that the gnu stack of a x86 program on a x64 linux starts from 0xffffe000. Am I doing things wrong?
I can find sources telling us about linux-gate.so.1 but I do not think this is the point here.
Any ideas, reversers?