Какая польза от раздела SHT_NULL в ELF?

  1. Какова цель SHT_NULL раздел в ELF?
  2. На него ссылается ОС или загрузчик?
  3. Каков размер этого раздела?
  4. Это как-то связано с указателем NULL?
  5. Кроме того, почему в этом разделе нет записи в сопоставлении сегментов раздела?

Из спецификации ELF:

SHT_NULL: Это значение помечает заголовок раздела как неактивный; у него нет связанного раздела. Другие члены заголовка раздела имеют неопределенные значения.

2 ответа

Решение

Какова цель раздела SHT_NULL в elf?

Служит часовым.

На него ссылается операционная система или загрузчик?

Нет.

Каков размер этого раздела?

Ноль (вы можете видеть, что в readelf -WS a.out вывод) [но смотри ниже].

почему в этом разделе нет записи в сопоставлении сегментов раздела?

Потому что этого раздела нет ни в одном сегменте.


Обычно самый первый раздел в каждом файле ELF имеет тип SHT_NULL, Теоретически, инструмент пост-ссылки может установить тип некоторого другого раздела на SHT_NULL также (например, если его данные больше не нужны), и все последующие инструменты должны игнорировать этот раздел. Это не распространено.

Одно "использование" SHT_NULL является обязательным для первой записи таблицы заголовков (индекс 0, названный SHN_UNDEF), что является магией.

Это задокументировано в Обновлении ABI System V (рекомендуется LSB):

Если количество разделов больше или равно SHN_LORESERVE (0xff00), e_shnum имеет значение SHN_UNDEF (0) и фактическое количество записей в таблице заголовков разделов содержится в поле sh_size заголовка раздела с индексом 0 (в противном случае, Элемент sh_size начальной записи содержит 0).

а также:

Другие значения типа раздела зарезервированы. Как упоминалось ранее, заголовок раздела для индекса 0 (SHN_UNDEF) существует, хотя индекс помечает неопределенные ссылки на разделы. Эта запись содержит следующее.

сопровождаемая таблицей, которая определяет, что означает каждая запись заголовка раздела в этом особом случае. Особенно, sh_type должно быть SHT_NULL,

Исходя из вышесказанного, кажется, существует первый раздел, позволяющий кодировать большое количество разделов, но я не тестировал поддержку ядра и компилятора.

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