Программа Разрывов Скрипта Линкера - PullRequest
0 голосов
/ 05 июня 2018

У меня есть программа, которая помещает некоторые структуры в именованный раздел, используя __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.

1 Ответ

0 голосов
/ 05 июня 2018

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...