[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Раздел 1. Общая информация об объектном файле ELF

Общая информация об объектном файле ELF

В этом разделе описан формат объектных файлов, называемый ELF (Формат исполняемых файлов и связывания). Существует три типа объектных файлов.

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

После введения в этой главе подробно рассматривается формат объектного файла и процесс создания программ. В главе 32 также рассмотрены компоненты объектного файла, необходимые для выполнения программы.

Формат файлов

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

Формат объектного файла

В самом начале файла расположен заголовок ELF, который описывает структуру файла. В разделах расположена информация, применяемая при связывании: инструкции, данные, таблица имен, информация о перемещении и т.п. Описание этих разделов вы найдете в этой главе ниже. В главе 32 рассмотрены сегменты и представление файла, предназначенное для выполнения.

Таблица заголовков программы указывает системе, как нужно создавать образ процесса. Файлам, используемым для создания образа процесса (выполнения программы) необходима таблица заголовков; для перемещаемых файлов такая таблица не требуется. Таблица заголовков разделов содержит информацию, описывающую разделы файла. В таблице есть запись для каждого раздела таблицы; в каждой записи хранится информация о разделе, например, имя раздела, размер и т.п. В файлах, используемых для компоновки, должна быть таблица заголовков разделов; в других файлах она не обязательна.

Примечание: На рисунке таблица заголовков программы показана сразу после заголовка ELF, а таблица заголовков разделов непосредственно перед разделами. В действительности порядок может быть другим. Более того, порядок разделов и сегментов не регламентируется. В файле зафиксирован только заголовок ELF.

Представление данных

Формат объектных файлов поддерживает различные процессоры с 32- или 64-разрядной архитектурой, в которых длина байта равна 8 битам. Однако этот формат может быть расширен для применения в других архитектурах. Поэтому объектные файлы содержат некоторую информацию в машинно-независимом формате, что позволяет идентифицировать и интерпретировать содержимое объектных файлов единым образом. Оставшиеся данные жестко связаны с определенным процессором, вне зависимости от того, на какой машине был создан файл.

Типы 32-разрядных данных
Имя Размер Выравнивание Назначение
Elf32_Addr 4 4 Адрес программы без знака
Elf32_Off 4 4 Смещение файла без знака
Elf32_Half 2 2 Среднее целое без знака
Elf32_Word 4 4 Целое без знака
Elf32_Sword 4 4 Целое со знаком
unsigned char 1 1 Короткое целое без знака

Типы 64-разрядных данных
Имя Размер Выравнивание Назначение
Elf64_Addr 8 8 Адрес программы без знака
Elf64_Off 8 8 Смещение файла без знака
Elf64_Half 2 2 Среднее целое без знака
Elf64_Word 4 4 Целое без знака
Elf64_Sword 4 4 Целое со знаком
Elf64_Xword 8 8 Длинное целое без знака
Elf64_Sxword 8 8 Длинное целое со знаком
unsigned char 1 1 Короткое целое без знака

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

В целях переносимости в ELF не применяются битовые поля.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]