Почему эльфийские сегменты не выровнены по странице?

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, будут поступать из исполняемого файла, а остальные заполняться нулями во время загрузки.

Здесь нет перекрытия.

Другие вопросы по тегам