Лучшие вопросы
Таймлайн
Чат
Перспективы

Executable and Linkable Format

Из Википедии, свободной энциклопедии

Executable and Linkable Format
Remove ads

ELF (англ. Executable and Linking Format — формат исполнимых и компонуемых файлов) — формат исполняемых двоичных файлов, используемый во многих современных UNIX-подобных операционных системах, таких как FreeBSD, Linux, Solaris и др.

Краткие факты ELF, Расширение ...
Remove ads

История

Стандарт формата ELF изначально был разработан и опубликован компанией USL как часть двоичного интерфейса приложений операционной системы UNIX System V[1]. Затем он был выбран комитетом TIS и развит в качестве переносимого формата для различных операционных систем, работающих на 32-разрядной аппаратной архитектуре Intel x86.[2] ELF быстро набрал популярность и, после того как компания HP расширила формат и опубликовала стандарт ELF-64, распространился и на 64-разрядных платформах.[3]

Remove ads

Типы

Стандарт формата ELF различает несколько типов файлов:

  • Перемещаемый файл — хранит инструкции и данные, которые могут быть связаны с другими объектными файлами. Результатом такой связи может быть совместно используемый объектный файл или исполняемый файл. К этому типу относятся объектные файлы статических библиотек.
  • Совместно используемый объектный файл — также содержит инструкции и данные и может быть связан с другими перемещаемыми файлами и совместно используемыми объектными файлами, в результате чего будет создан новый объектный файл, либо при запуске программы на выполнение операционная система может динамически связать его с исполняемым файлом программы, в результате чего будет создан исполняемый образ программы. В последнем случае речь идет о совместно используемых библиотеках.
  • Исполняемый файл — содержит полное описание, позволяющее системе создать образ процесса. В том числе: инструкции, данные, описание необходимых совместно используемых объектных файлов и необходимую символьную и отладочную информацию.
Remove ads

Формат

Суммиров вкратце
Перспектива

Каждый ELF файл состоит из следующих частей:

Заголовок файла

Заголовок файла (ELF Header) имеет фиксированное расположение в начале файла и содержит общее описание структуры файла и его основные характеристики, такие как: тип, версия формата, архитектура процессора, виртуальный адрес точки входа, размеры и смещения остальных частей файла. Заголовок имеет размер 52 байта для 32-битных файлов или 64 для 64-битных. Данное различие обуславливается тем, что в заголовке файла содержится три поля, имеющих размер указателя, который составляет 4 и 8 байт для 32- и 64-битных процессоров соответственно. Такими полями являются e_entry, e_phoff и e_shoff.

Подробнее Размер, Название ...

Таблица заголовков программы

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

При анализе структуры заголовка программы можно обнаружить различное местоположение поля p_flags для 32- и 64-битных ELF файлов. Данное различие обуславливается выравниванием структуры для увеличения эффективности обработки.

Подробнее Размер, Название ...

Таблица заголовков секций

Таблица заголовков секций содержит атрибуты секций файла. Данная таблица необходима только компоновщику, исполняемые файлы в наличии этой таблицы не нуждаются (ELF загрузчик её игнорирует). Предоставленную в таблице заголовков секций информацию компоновщик использует для оптимального размещения данных секций по сегментам при сборке файла с учётом их атрибутов.

Подробнее Размер, Название ...

Содержимое секций и сегментов

Remove ads

Утилиты

Существует множество утилит для работы с файлами формата ELF, основные из них содержатся в наборе программных инструментов GNU Binutils:

  • elfedit — изменение заголовка файла ELF, часть набора GNU Binutils.
  • objdump — вывод информации об объектных файлах (в том числе и ELF), часть набора GNU Binutils.
  • readelf — вывод подробной информации об объектном файле формата ELF, часть набора GNU Binutils.
  • elfdump — вывод информации о ELF файле, часть набора GNU Binutils.
  • elfutils — альтернатива для GNU Binutils, официально доступна только для GNU/Linux, но существуют порты на другие операционные системы[4].
  • file — вывод небольшого количества информации о файлах известных программе форматов (доступна для большинства UNIX-подобных операционных систем).
Remove ads

См. также

Примечания

Ссылки

Loading content...
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads