Операционная система UNIX. Руководство программиста

     

Секции


Секция есть наименьшая часть объектного файла, которая подвергается перемещению и рассматривается как нечто отдельное и различимое. Как правило, в объектном файле присутствуют три секции, именуемые .text, .data и .bss. Это секции команд, инициализированных и неинициализированных данных. В других секциях могут размещаться комментарии, дополнительные сегменты команд и данных, разделяемые сегменты данных. Допускаются секции, определенные пользователем. Однако в любом случае ОС UNIX при загрузке файла на выполнение помещает в память только секции .text, .data и .bss.

Примечание

Было бы ошибкой думать, что каждый объектный файл обычного формата имеет какое-то определенное количество секций. Неправильно было бы также полагать заданными такие характеристики файла, как порядок секций, их расположение в файле или адрес, по которому они будут загружены. Подобная информация может быть получена лишь после создания объектного файла. Если программы обрабатывают объектные файлы обычного формата, то они должны извлекать эту информацию из заголовков файла и входящих в него секций.


В объектном файле обычного формата за таблицей заголовков секций следует содержимое секций - соответствующее количество байт команд или данных. Содержимое начинается с границы, кратной четырем байтам.

Предложение SECTIONS управляющего языка редактора связей (см. Руководство по редактору связей) предоставляет, помимо прочих, следующие возможности:

  • Определять, как надлежит компоновать входные секции.
  • Управлять расположением выходных секций.
  • Переименовывать выходные секции.

Если предложения SECTIONS отсутствуют, каждая входная секция размещается в одноименной выходной. Например, если редактируются связи набора объектных файлов, в каждом из которых имеется секция .text, то выходной объектный файл будет содержать единственную секцию .text, полученную путем объединения одноименных входных секций.




Секция объектного файла должна занимать непрерывный участок памяти и является минимальным объектом, который подвергается перемещению. Координатами секции являются ее начальный адрес и длина. В начале файла располагаются заголовки секций, описывающие все секции этого файла. В процессе обработки из секций входных файлов вырабатываются выходные секции, которые могут содержать команды, данные или смесь того и другого. Как между входными, так и между выходными секциями могут быть пустоты ("дыры"), однако в пределах одной выходной секции память выделяется последовательно и с пустотами перекрываться не может.



Содержание раздела