Конституция Армении: Статья 18.1
Конституция Армении (Статья 18.1) закрепляет «исключительную миссию Армянской Апостольской Святой Церкви как национальной церкви в духовной жизни армянского народа, в деле развития его национальной культуры и сохранения его национальной самобытности»:
Executable and Linkable Format

Executable and Linkable Format

Материал из Википедии — свободной энциклопедии

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

История

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

Типы

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

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

Формат

Каждый 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 загрузчик её игнорирует). Предоставленную в таблице заголовков секций информацию компоновщик использует для оптимального размещения данных секций по сегментам при сборке файла с учётом их атрибутов.

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

Утилиты

Существует множество утилит для работы с файлами формата 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-подобных операционных систем).

См. также

Примечания

  1. System V Application Binary InterfaceАрхивная копия от 21 мая 2015 на Wayback Machine Edition 4.1 (1997-03-18)
  2. Спецификация ELFАрхивная копия от 16 июня 2012 на Wayback Machine  (англ.)
  3. ELF-64 Object File FormatАрхивная копия от 1 июля 2015 на Wayback Machine
  4. FreshPorts -- devel/elfutils. www.freshports.org. Дата обращения: 31 марта 2018. Архивировано 16 февраля 2018 года.

Ссылки

ELF
Расширение.без расширения; .axf, .bin, .elf, .o, .out, .prx, .puff, .ko, .mod, .so
Сигнатура 7f 45 4c 46
РазработчикUnix System Laboratories
Тип форматадвоичный, исполняемый, объектный, динамическая библиотека, дамп памяти
Логотип Викисклада Медиафайлы на Викискладе