Тихо сам с собой. Похоже получилось сдвинуть секцию, но как-то через 5 точку. Код примерно такой:
Код
/* в конце первой секции с кодом */
_label2 = ABSOLUTE(.);
}
.data : AT ( _label1 )
_data = .;
...
_edata = .;
_new_flash_addr = _label2 + _edata - _data - 0x10000000;
} > RamLoc8
/* Если перенести код сюда, то прибавится лишних 0x20000000 */
.text2 _new_flash_addr : ALIGN(4)
{
...
Как избавится от дополнительного смещения на размер смещенения секции памяти пока не могу догадаться. Но такое решение уже работает, но подозреваю что что-то очень важное в логике gnu ld от меня ускользнуло.
Ну и добивая тему:
Цитата
_new_flash_addr = ABSOLUTE(_label2 + _edata - _data);
Наверное надо отшлифовать использованием SIZEOF.