Я получаю ошибку времени ссылки:
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 <linux/init.h> 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"
);
Есть ли способ это исправить? Идея состоит в том, чтобы поместить varaible __ctors_begin__
в начале определенного раздела памяти. Этот код является наследием, которое отлично работало, используя другую систему сборки и старый компилятор.
Значение этого кода сборки объяснено в ответе на мой предыдущий вопрос .