Программа Разрывов Скрипта Линкера

У меня есть программа, которая помещает некоторые структуры в именованный раздел, используя __attribute__ ((".sdh_ble_observers")) а также extern mytype * ___start_sdh_ble_observers,

Я использую следующий скрипт компоновщика

SECTIONS
{
.sdh_ble_observers :
{
PROVIDE(___start_sdh_ble_observers = .);
KEEP(*(SORT(.sdh_ble_observers*)))
PROVIDE(___stop_sdh_ble_observers = .);
}
}
INSERT AFTER .data;

Когда я использую g ++ для связи приложения, используя флаг -T для сценария компоновщика, исполняемый файл становится неисполнимым cannot execute binary file: Exec format error,

Когда я удаляю объявления extern в коде и не использую флаг -T в g ++, исполняемый файл работает нормально.

Что может быть причиной этого? Платформа Cygwin.

0

Решение

Я только что нашел ответ на проблему.

Добавление оператора выравнивания в раздел .sdh_ble_observers : ALIGN(0x1000) сделал трюк.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]