Выравнивание секций в выходном файле
Для выравнивания секций внутри выходного файла используется опция BLOCK, которую можно указывать как для отдельной секции, так и в предложении GROUP. Опция BLOCK не влияет ни на процесс редактирования связей, ни на адрес размещения выходной секции, и отражается только на расположении секции в пределах выходного файла. Пример:
SECTIONS { .text BLOCK (0x200): {} .data ALIGN (0x2000) BLOCK (0x200): {} }
Указанные предложения SECTIONS предписывают ld(1), чтобы каждая из секций .text и .data оказались в выходном файле со смещением от начала, кратным 0x200 - например, 0x0, 0x200, 0x400 и т.д.
Полезно рассмотреть содержимое файла /lib/default.ld, с помощью которого можно изменять подразумеваемые соглашения редактора связей:
MEMORY { valid : org = 0x0, len = 0x90000000 } SECTIONS { GROUP BLOCK(1024): { .text: {*(.init) *(.text) *(.fini)} } GROUP ALIGN(1048576) BLOCK(1024): { .data: {} .bss: {} } }