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

       

Обход неконфигурируемых областей памяти


Когда в виртуальной памяти есть неконфигурируемые области, каждое приложение (или пользователь) должно самостоятельно обеспечивать такую структуру выходных секций, чтобы они помещались в конфигурируемых областях. Например, пусть конфигурация памяти такова:

MEMORY { mem1: о=0x00000 l=0x02000 mem2: о=0x40000 l=0x05000 mem3: о=0x20000 l=0x10000 }

Пусть далее в каждом из файлов f1.o, f2.o, ..., fn.o содержатся три секции: .text, .data и .bss. Предположим также, что размер объединенной секции .text оказался бы равным 0x12000 байт. Легко видеть, что не существует конфигурируемой области памяти достаточной длины. Чтобы ld(1) мог выполнить размещение, необходимо эту секцию разделить посредством соответствующих предложений, например:

SECTIONS { txt1: { f1.o (.text) f2.o (.text) f3.o (.text) } txt2: { f4.o (.text) f5.o (.text) f6.o (.text) } . . . }



Содержание раздела