Почему эльфийские сегменты не выровнены по странице?
readelf -l /bin/ls
:
LOAD 0x000000 0x08048000 0x08048000 0x18ff8 0x18ff8 R E 0x1000
LOAD 0x019eec 0x08061eec 0x08061eec 0x003f4 0x01014 RW 0x1000
Таким образом, граничная страница между двумя сегментами доступна только для чтения и для записи, как это возможно?
1 ответ
Предполагая размер страницы 4096 (0x1000) байтов и адреса округления до гранулярности страницы:
- Первый загружаемый сегмент будет использовать диапазон адресов [0x8048000--0x8060FFF], включая оба конца.
- Второй загружаемый сегмент будет использовать диапазон адресов [0x8061000--0x8062FFF], из которых байты 0x3F4, начинающиеся с адреса 0x8061EEC, будут поступать из исполняемого файла, а остальные заполняться нулями во время загрузки.
Здесь нет перекрытия.