Jakub Jelinek wrote:
Prelink by default allocates libs on i?86 in the
0x00101000 .. 0x00e00000
0x02000000 .. 0x08000000
0x41000000 .. 0x50000000
regions. So, if kernel wants to put vDSO randomly into the ASCII zone,
it can have 528 choices (2MB from 0xe00000 to 0x1010000) or if it doesn't
care about that, it can use 18MB (0xe00000 to 0x2000000), i.e. 4608
possibile placements.
Of course it is possible to change prelink to pick up different
ranges (though, the 0 .. 1MB+4KB range is not an option due to various
emulators that need that range and from 0x08000000 or so start binaries
and if possible, prelink would like to use at least part of the ASCII zone).
It would be nice if prelink default policy avoided 0 .. 0x111000
(1MB + 64KB + 4KB) so that vm86 could run various programs that
use "himem" where the segment base is 0xffff0 (1MB - 16)
and inclusive limit is 0xffff, which gives a highest address of
0x10ffef. [It would have been nice if the default linux kernel
loaded at 0x110000 instead of 0x100000. Then Win3.1 and linux
could have co-existed in memory.]
--