slimbrazerzkidai.blogg.se

Standalone hd loader elf
Standalone hd loader elf





standalone hd loader elf

I don't believe this question is really to do with ELF. So is this some randomness of the PID or physical memory bleeding through? All in all I'm very confused as to how much stack is actually legally available for random access, and how much is requested on changing RSP or on writing to areas "just out of range" of legal memory. It can't be ASLR causing the nondeterminism because I'm not using a GOT or any PLT section the executable is always loaded at the same locations in virtual memory every time. According to GDB, the subq instruction on its own will expand the size of the mmap, which is mysterious to me (how does linux know what's in my register?), but this program will usually crash GDB on exit for some reason. I played with different values of the constant 0x7fe000 here to see what happens, and for this value it is nondeterministic whether I get a segfault or not. I am aware that the page just below the stack is a "guard page" that automatically becomes writable and "grows down the stack" if I write to it (presumably so that naive stack handling "just works"), but if I allocate a huge stack frame then I could overshoot the guard page and segfault, so I want to determine how much space is already properly allocated to me right at process start.ĮDIT: Some more data makes me even more unsure what's going on.

standalone hd loader elf

Standalone hd loader elf full#

But how much space is available below SP? On my system there are 0x1FF00 bytes mapped below SP, but presumably this is counting down from the top of the stack at 0x7ffffffff000, and there are 0x21000 bytes in the full mapping. The ELF specification has very little to say about how or why this stack page exists in the first place, but I can find references that say that the stack should be initialized with SP pointing to argc, with argv, envp and the auxiliary vector just above that, and I have confirmed this. Here's the test (on Ubuntu x86-64): $ cat test.s I'm studying the ELF specification ( ), and one point that is not clear to me about the program loading process is how the stack is initialized, and what the initial page size is.







Standalone hd loader elf