Коллеги, как можно установить вручную адрес секции .data? У меня .data всегда устанавливается в адрес (.code + 0x2000)
Хотя по содержимому скрипта pdp11-aout.ld этого и не скажешь.

То есть, когда юзаются библиотеки с переменными, я получаю бинарник от 8 Кб.

Простые неинициализированные переменные в .data ложатся раньше константного массива.

Если выкусить секцию .data вообще:
Код:
pdp11-aout-objcopy.exe --only-section .text --output-target binary %1.out ..\%1.bin
то мы получаем нормальный маленький бинарь, но константные массивы тоже выкусываются.

В идеале хотелось бы, чтобы константный массив ложился в секцию .data раньше, чем неинициализированные переменные (чтобы не увеличивать ими размер бинаря).

Пробовал пихать код и данные в одну секцию .text:

Код:
OUTPUT_FORMAT("a.out-pdp11")
ENTRY(start)
phys = 00001000;
SECTIONS
{
  .text phys : AT(phys) {
    code = .;
    *(.text)
    *(.rodata);
    data = .;
    *(.data)
  }
  end = .;
}
Но с таким скриптом сборки переменные налазят на константный массив и занимают с ним одно адресное пространство. Помогает ALIGN:

Код:
OUTPUT_FORMAT("a.out-pdp11")
ENTRY(start)
phys = 00001000;
SECTIONS
{
  .text phys : AT(phys) {
    code = .;
    *(.text)
    *(.rodata)
    . = ALIGN(0100);
    data = .;
    *(.data)
  }
  end = .;
}
Но при таком решении приходится регулировать размер в ALIGN ручками, чтобы константный массив не налазил на переменные.

В общем, нужен хороший совет. Как сделать, чтобы секция .data ложилась сразу после секции кода?