Типичный объектный модуль содержит следующие структуры данных.

Таблицу перемещений, т. е. таблицу ссылок на перемещаемые объекты внутри модуля.

Таблицу ссылок на внешние объекты. Иногда это называется таблицей или списком импорта.

Таблицу объектов, определенных в этом модуле, на которые можно ссы­латься из других модулей. В некоторых случаях ее называют списком экс­порта. Иногда таблицы экспорта и импорта объединяют и называют все это таблицей глобальных символов. В этом случае для каждого символа приходится указывать, определен он в данном модуле или нет, а если оп­ределен, то как.

□ Различную служебную информацию, такую, как имя модуля, программу, которая его создала и отладочную информацию.

□ Собственно код и данные модуля.

Как правило, код и данные разбиты на именованные секции. Например, в системах семейства Unix программы, написанные на языке С, состоят из минимум трех программных секций:

□ . text — исполняемый код (современные компиляторы иногда помещают в эту секцию и данные, описанные как const);

□ .data — статически инициализированные данные;

.bss — неинициализированные данные.

Некоторые форматы объектных модулей, в частности ELF (Executable and Linking Format — формат исполняемых и собираемых [модулей], используе­мый современными системами семейства Unix), предоставляют особый тип глобального символа — слабый (weak) символ.