Цитата(sigmaN @ Jan 25 2017, 15:24)
У вас кстати скорее наоборот - нет скрипта линкера, который переменные __bss_start__ __bss_end__ объявляет, а стартап на них ссылается, но их нет. В итоге фиаско )
Спасибо за подсказку. Скрипт линкера есть, в нём есть такие строки:
Код
.bss : ALIGN (8)
{
*(.shbss)
*(.bss .bss.* .gnu.linkonce.b.*)
*(COMMON)
. = ALIGN (8);
*(.ram.b .bss.ram)
. = ALIGN (8);
_end = .;
__end = .;
} >ram
и ещё куча всего.
startup.s тоже есть, но он какой-то почти пустой:
Код
.globl __reset
.text
__reset:
b _start
и всё. То есть он ссылается только на _start, в скрипте линковки это определено как:
Код
PROVIDE(__cs3_reset = __reset);
*(.cs3.reset)
_start = DEFINED(__cs3_start_asm) ? __cs3_start_asm : _start;
В общем, пока ясности не прибавилось.