Сегмент данных включает инициализированные данные, копируемые в память из соответствующих разделов исполняемого файла, и неинициализированные данные, которые заполняются нулями перед началом выполнения процесса. Неинициализированные данные часто называют сегментом BSS.
Формат ELF
Формат ELF имеет файлы нескольких типов, которые до сих пор мы называли по-разному, например, исполняемый файл или объектный файл. Тем не менее стандарт ELF различает следующие типы:
1.
2.
3.
На рис. 2.4 приведена структура исполняемого файла, с помощью которого операционная система может создать образ программы и запустить программу на выполнение.
Рис. 2.4. Структура исполняемого файла в формате ELF
Заголовок имеет фиксированное расположение в файле. Остальные компоненты размещаются в соответствии с информацией, хранящейся в заголовке. Таким образом заголовок содержит общее описание структуры файла, расположение отдельных компонентов и их размеры.
Поскольку заголовок ELF-файла определяет его структуру, рассмотрим его более подробно (табл. 2.4).
Таблица 2.3. Поля заголовка ELF-файла
Поле | Описание |
---|---|
е_ident[] | Массив байт, каждый из которых определяет некоторую общую характеристику файла: формат файла (ELF), номер версии, архитектуру системы (32-разрядная или 64-разрядная) и т.д. |
e_type | Тип файла, поскольку формат ELF поддерживает несколько типов |
e_machine | Архитектура аппаратной платформы, для которой создан данный файл. В табл. 2.4 приведены возможные значения этого поля |
e_version | Номер версии ELF-формата. Обычно определяется как EV_CURRENC (текущая), что означает последнюю версию |
e_entry | Виртуальный адрес, по которому системой будет передано управление после загрузки программы (точка входа) |
e_phoff | Расположение (смещение от начала файла) таблицы заголовков программы |
е_shoff | Расположение таблицы заголовков секций |
е_ehsize | Размер заголовка |
e_phentsize | Размер каждого заголовка программы |
e_phnum | Число заголовков программы |
e_shentsize | Размер каждого заголовка сегмента (секции) |
е_shnum | Число заголовков сегментов (секций) |
e_shstrndx | Расположение сегмента, содержащего таблицу строк |
Таблица 2.4. Значения поля e_machine заголовка ELF-файла
Значение | Аппаратная платформа |
---|---|
ЕМ_М32 | AT&T WE 32100 |
ЕМ_SPARC | Sun SPARC |
ЕМ_386 | Intel 80386 |
ЕМ_68K | Motorola 68000 |
EM_88K | Motorola 88000 |
ЕМ_486 | Intel 80486 |
ЕМ_860 | Intel i860 |
ЕМ_MIPS | MIPS RS3000 Big-Endian |
EM_MIPS_RS3_LE | MIPS RS3000 Little-Endian |
EM_RS6000 | RS6000 |
EM_PA_RISC | PA-RISC |
EM_nCUBE | nCUBE |
EM_VPP500 | Fujitsu VPP500 |
EM_SPARC32PLUS | Sun SPARC 32+ |
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии