Ошибка из-за неправильного обращения раздела Memory

Я получаю ошибку времени ссылки:

WARNING: /home/gulevich/development/camac-fedorov/camac/linux/k0607-lsi6/camac-k0607-lsi6.o (.ctors): unexpected non-allocatable section.
Did you forget to use "ax"/"aw" in a .S file?
Note that for example  contains
section definitions for use in .S files.

Код, вызывающий ошибку (блок в источнике C):

# if   defined(__ELF__)
#  define __SECTION_FLAGS ", \"aw\" , @progbits"
 /* writable flag needed for ld ".[cd]tors" sections bug workaround) */
# elif defined(__COFF__)
#  define __SECTION_FLAGS ", \"dr\""
 /* untested, may be writable flag needed */
# endif


asm
(
 ".section .ctors" __SECTION_FLAGS "\n"
 ".globl __ctors_begin__\n"
 "__ctors_begin__:\n"
 ".previous\n"
);

Там какой-либо путь состоит в том, чтобы зафиксировать это? Идея состоит в том, чтобы поместить переменную __ctors_begin__ в начале определенного раздела памяти. Этот код является наследием, которое хорошо работало с помощью другой системы сборки и более старого компилятора.

Значение этого ассемблерного кода, объясненного в ответе на мой предыдущий вопрос.

8
задан Community 23 May 2017 в 12:15
поделиться

4 ответа

Длинный план: Возможно, ваш компоновщик ожидает формат ELF (вместо COFF), и по какой-то причине __ ELF __ не определен? Вы проверили вывод препроцессора для этой конкретной сборки?

0
ответ дан 6 December 2019 в 02:24
поделиться

Я бы хотел проверить значение __ SECTION_FLAGS , просто чтобы убедиться, что он действительно содержит ax или aw. Я также был бы уверен, что __ COFF __ не определен, а __ ELF __ - есть. В противном случае, возможно, пришло время взять (возможно) предыдущую или будущую версию компилятора / компоновщика и посмотреть, решит ли это вашу проблему. Возможно, вы могли бы скомпилировать свой код как C ++ и каким-то образом позволить скриптам компилятора / компоновщика / ссылки делать то, что они должны делать? Совершенно не знаю, но я бы начал с этого.

0
ответ дан 6 December 2019 в 02:24
поделиться

очень длинный вопрос, но определен ли раздел .ctors так, как вы хотите, в сценарии компоновщика? ld iirc имеет подробный параметр для отображения сценария компоновщика.

1
ответ дан 6 December 2019 в 02:24
поделиться

Разделы работают нормально. Поэтому я проигнорирую это предупреждение.

0
ответ дан 6 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: