Это часть спецификации формата переносимого исполняемого файла.Однако большинство форматов файлов также имеют абстракцию раздела.Фактически, именно поэтому вы видите библиотеки, такие как BFD, которые предоставляют представление об этой общей абстракции.
Каждый раздел может иметь определенные флаги, описывающие, какой тип доступа он имеет.Обычно раздел данных может иметь права на чтение / запись, но не иметь права на выполнение, тогда как раздел кода может иметь права на чтение / выполнение, но не имеет права на запись.Для разделов кода существуют общие имена, такие как .text
, но нет ничего обязательного, что раздел должен быть назван так.Фактически, некоторые агрессивные исполняемые упаковщики будут удалять имена разделов.
Разделы определяются во время компиляции, и динамический компоновщик использует эту информацию, чтобы решить, как отобразить программу в память, установить защиту страниц и т. Д.