GNU LINKER NOLOAD создает S-записи
Мой компоновщик GNU (для M68360) используется для создания S-записей; Обратите внимание, что код завершен под моим контролем, никакие другие (стандартные) библиотеки не включены, кроме моих. Я пометил раздел для данных .bss и определений некоторых переменных как NOLOAD. Однако для раздела создаются S-записи (все данные обнуляются) Как узнать компоновщику, что не должны создаваться s-записи?
Проблема возникает с момента введения kdata.o(.bss). Этот модуль содержит только объявление неинициализированных данных. Перед этим переменные объявляются в самом скрипте (например,var = . ; . = . + 4;)
Тем не менее, можно ли сказать компоновщику не производить вывод для этого случая?
SECTIONS{
.kernelData (NOLOAD): {
_kdataBegin = . ;
kdata.o(.bss)
_kdynBegin = . ; 0x0000600c
/* keep next three lines because of code in kfalloc */
k_dynaddr = . ; . = . + 4 ;
. += (_KDRAM_SIZE - . - 4); /* take all space to end; stay inside */
k_dynend = (. + 3) & ~ 3 ; /* last addr in kernel dynamic space */
_kdynEnd = . ;
. = ALIGN(16) ; /* align to 16 byte boundary */
_kdataEnd = . ; /* END OF CLEANING KERNEL DATA */
} > ram
Я не ожидаю этих результатов
S21400000000000000000000000000000000000000EB
S21400001000000000000000000000000000000000DB