Размещение секции линкера

Я объявил некоторые extern const данные в моем коде C ++ и добавил атрибут раздела __attribute__((section("my_ro_data"))),
Мой файл сценария компоновщика выглядит так:

SECTIONS
{
/* other stuff */

.rodata :
{
*(.rodata .rodata.*)
*(.gnu.linkonce.r.*)
} >CODE
. = ALIGN(4);

/* other stuff */
}

Я заметил в файле карты, этот раздел my_ro_data раздел размещен после *(.gnu.linkonce.r.*) и перед другими вещами. Почему это так и как знает компоновщик, поскольку в ld-скрипте не упоминается my_ro_data?
Также я попытался удалить константный квалификатор, а затем кажется, что компоновщик помещает это в .data Выходной раздел, описание которого также не упоминается, чтобы поместить его туда, и он не соответствует групповым символам.
Итак, я предполагаю, что компоновщик ищет атрибуты раздела и по ним решает поместить его, но это только мои предположения, и мне нужно точно знать, как и почему он работает таким образом. Заранее спасибо.

Кроме того, было бы здорово получить некоторые справочные руководства. Пытался что-то найти, но пока ничего.

0

Решение

Задача ещё не решена.

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

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

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