On Sun, May 18, 2008 at 7:16 PM, Mulyadi Santosa <mulyadi.santosa@xxxxxxxxx> wrote:
What could be the rationale behind not using addresses 0x0 - 0x08048000 in previous versions. Kernel version 2.4 also shows libc to be at address 0x40xxxxxx i.e. above 1GB address
Regards,
Shyamal
Hi man...
>>yeah, stack (in x86) usually grow downwards from quite high address.
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.
>>IMO this is done to give stack the widest virtually contigous room
>>possible
>>yeah, it grows upward (in x86)...again in the highest address
> The heap also extends from where the bss ends.
>>possible...to give widest room possible. But for heap, it can be
>>composed of discontigous VMA.....
>>yeah...however address space layout randomization, especially one that
> Dynamic libraries ld-linux.so and libc.so also start from 0x40000000
> onwards.
>>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
>>i think libc is now put there...to provide something called ascii
> 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?
>>armor. Please google for this term first so you can read thoroughly...
>>i forgot the whole definition..sorry.
What could be the rationale behind not using addresses 0x0 - 0x08048000 in previous versions. Kernel version 2.4 also shows libc to be at address 0x40xxxxxx i.e. above 1GB address
Regards,
Shyamal
--
Linux - because life is too short for reboots...