COFF

Common Object File Format (COFF) — формат исполняемых файлов, файлов объектного кода и динамических библиотек. Формат появился в системе Unix System V, заменив прежний a.out. Послужил основой для расширенных спецификаций, таких как XCOFF и ECOFF, и был впоследствии заменён форматом ELF. Продолжает использоваться в некоторых UNIX-подобных операционных системах, в Microsoft Windows и других системах.

COFF
Расширение .o или .obj
Тип формата исполняемый, объектный, динамическая библиотека
Развит в XCOFF, ECOFF, Portable Executable

Формат файла

Файл формата COFF включает в себя заголовок файла, дополнительный заголовок, таблицу секций и одну или несколько секций кода и данных.

Заголовок файла COFF
СмещениеДлинаПолеОписание
02f_magicИдентификатор типа машины, на которой файл может исполняться
22f_nscnsКоличество секций
44f_timdatМладшие 32 бита количества секунд, прошедших с 0:00 1 января 1970 г. в момент создания файла
84f_symptrПоложение в файле таблицы символов (используется для отладки)
124f_nsymsКоличество элементов в таблице символов
162f_opthdrРазмер дополнительного заголовка, для объектных файлов равен нулю
182f_flagsФлаги, указывающие атрибуты файла

Дополнительный заголовок файла содержит информацию, необходимую для загрузчика. Размер заголовка может быть разным, в зависимости от системы и версии.

Дополнительный заголовок (для MIPS)
СмещениеДлинаПолеОписание
02magicТип файла
22vstampВерсия
44tsizeСуммарный размер всех секций, содержащих исполняемый код
84dsizeСуммарный размер всех секций, содержащих инициализированные данные
124bsizeСуммарный размер всех секций, содержащих неинициализированные данные
164entryАдрес точки входа в программу (0 — если не используется)
204text_startАдрес загрузки кода
244data_startАдрес загрузки инициализированных данных
284bss_startАдрес размещения неинициализированных данных
324gprmask
364cprmas
404gp_value

Таблица секций находится непосредственно за дополнительным заголовком. Каждая строка в таблице является заголовком соответствующей секции.

Строка таблицы секций
СмещениеДлинаПолеОписание
08s_nameИмя секции
84s_paddrФизический адрес
124s_vaddrВиртуальный адрес
164s_sizeРазмер секции
204s_scnptПоложение секции в файле
284s_relptrПоложение в файле таблицы настройки адресов секции
324s_lnnoptr
362s_nrelocКоличество элементов в таблице настройки адресов
382s_nlnno
404s_flagsФлаги

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.