Я имел в виду не нужно специально объявлять кучу. Написал по идиотски.
-nostartfiles и так указано. Вот после -nostdlib начинает ругаться именно так. Только счастья не прибавляется. Заглушки, в том числе отдельный printf.c, помогают избежать зависаний, но на вопрос не отвечают. Хочется в полной мере использовать newlib.
Добавил в начало программы такие строки:
Цитата
extern int end;
sprintf(str, "end=%X\r\n", &end);
INFO(str);
res_sbrk=sbrk(0);
sprintf(str, "res_sbrk=%p\r\n", res_sbrk);
INFO(str);
res_sbrk=sbrk(10*1024);
sprintf(str, "res_sbrk=%p\r\n", res_sbrk);
INFO(str);
res_sbrk=sbrk(10*1024);
sprintf(str, "res_sbrk=%p\r\n", res_sbrk);
INFO(str);
и получил такой результат:
Цитата
end=41FD8
res_sbrk=0x41fd8
res_sbrk=0x41fd8
res_sbrk=0x447d8
Но непонятно, как "подключить" результат sbrk к sprintf в плане использования им этой кучи. Вообще sbrk выполняет очень сложную задачу по складыванию двух чисел и возврату результата из внутренней переменной. Я так понял, что для задания кучи, которую будет использовать newlib, нужно вызывать другую функцию, которая уже сама вызовет sbrk. Только не нашел какую.