Hi man... On Sun, May 18, 2008 at 5:08 PM, Shyamal Shukla <shyamalshukla@xxxxxxxxx> wrote: > Hi All, > > All Linux processes seem to be starting with the virtual address > 0x8048000. As i see, this value has been hard coded in the linker script. I > expected the stack/heap to be lying in the virtual address range 0 - > 0x08048000. However on printing the address of a local variable, I found it > to be lying towards the end of user space addresses 0xb0000000 - > 0xc0000000. Hence the stack is expected to be lying at the end of the user > address space. yeah, stack (in x86) usually grow downwards from quite high address. IMO this is done to give stack the widest virtually contigous room possible > The heap also extends from where the bss ends. yeah, it grows upward (in x86)...again in the highest address possible...to give widest room possible. But for heap, it can be composed of discontigous VMA..... > Dynamic libraries ld-linux.so and libc.so also start from 0x40000000 > onwards. yeah...however address space layout randomization, especially one that is implemented in grsecurity could change the rule of the game. The condition: the libs and the binary are compiled as completely safe to be relocated > In that case, what is it that resides at addresses 0 - 0x8048000. The first > page starting at 0x0 can be marked empty to prohibit usage of 0x0 as a > usable address, but what about other addresses in this range? i think libc is now put there...to provide something called ascii armor. Please google for this term first so you can read thoroughly... i forgot the whole definition..sorry. regards, Mulyadi. -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ