Спецификации файлов
При определении выходной секции, файлы и секции файлов, которые должны быть включены в нее, нужно перечислять в том порядке, в котором они должны следовать в выходной секции. Секции входного файла указываются одним из следующих способов:
имя_файла (имя_секции)
имя_файла (имя_секции1 имя_секции2 ...)
Имена секций входного файла, как и сами спецификации файлов, должны отделяться друг от друга пробелами, символами табуляции, переводами строк или запятыми.
Чтобы указать все неинициализированные и неразмещаемые глобальные объекты из данного файла, можно использовать запись
имя_файла [COMMON]
Если имя файла указывается без сопровождающего его списка секций, то все секции этого файла (кроме неинициализированных и неразмещаемых глобальных объектов) вставляются в определяемую выходную секцию. Пример:
SECTIONS { outsec1: { file1.o (sec1) file2.o file3.o (sec1, sec2) } }
В результате выполнения этого предложения порядок размещения входных секций в выходной секции outsec1 будет таким:
- Секция sec1 из файла file1.o.
- Все секции файла file2.o, в том же порядке, в котором они следуют в файле file2.o.
- Секция sec1 из файла file3.o, а затем секция sec2 того же файла file3.o.
Если в других входных файлах окажутся секции с именем outsec1, то они будут следовать после секций, перечисленных в приведенном выше определении выходной секции outsec1. Если в файле file3.o или в файле file1.o окажутся, кроме перечисленных выше, еще какие-нибудь входные секции, то они будут помещены в одноименные выходные, - в том, разумеется, случае, если пользователь не включит их в другие спецификации файлов.
Для спецификации всех не размещенных ранее входных секций с определенным именем (независимо от имени входного файла) используется запись вида
* (имя_секции)