Операционная система UNIX. Руководство программиста


Группировка выходных секций - часть 2


При этом выходной файл будет по-прежнему содержать три различные секции (.text, .data и .bss), однако теперь они будут размещаться в последовательных участках виртуальной памяти.

Группу выходных секций как единое целое можно связать с конкретным адресом или произвести ее выравнивание на определенную границу, просто указав нужный адрес в предложении GROUP. Так, для связывания с адресом 0xС0000 достаточно воспользоваться конструкцией

GROUP 0xС0000: {

а для выравнивания на границу, кратную 0x10000, - конструкцией

GROUP ALIGN (0x10000): {

Если сделать одно из этих добавлений к указанному выше примеру, то выходная секция .text будет размещена по адресу 0xС0000 (соответственно выравнена на границу 0x10000); затем остальные члены группы, в порядке их указания, размещаются по ближайшим доступным адресам.

Если предложение GROUP не используется, то каждая выходная секция рассматривается отдельно:

SECTIONS { .text: {} .data ALIGN (0x2000): {} .bss: {} }

Секция .text связывается с виртуальным адресом 0x0 (если он находится в пределах конфигурируемой памяти). Секция .data связывается с виртуальным адресом, кратным 0x2000. Если хватит места, секция .bss будет следовать сразу за секцией .text, если же не хватит - то сразу за секцией .data. Порядок, в котором имена выходных секций появляются в предложении SECTIONS, не определяет порядка следования этих секций в выходном файле.




Начало  Назад  Вперед