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

0 ответов

Другие вопросы по тегам