А вот и в syscalls.c в исходниках с левого гитхаба newlib\libc\sys\arm\ с атрибутом weak int __attribute__((weak))
_write (int file, const void * ptr, size_t len)
{
int slot = findslot (remap_handle (file));
int x = _swiwrite (file, ptr, len);
if (x == -1 || x == len)
return error (-1);
if (slot != MAX_OPEN_FILES)
openfiles[slot].pos += len - x;
return len - x;
}
Но видел и write() -> printf ("%c", b[i]);
А дальше посредством макропроцессора такая Дичь... Например:
#ifdef STRING_ONLY
# ifdef _FVWRITE_IN_STREAMIO
# define __SPRINT __ssprint_r
# else
# define __SPRINT __ssputs_r
# endif
#else
# ifdef _FVWRITE_IN_STREAMIO
# define __SPRINT __sprint_r
# else
# define __SPRINT __sfputs_r
# endif
#endif
Вот и что в качестве нижнего уровня реализовывать? То есть общего знаменателя нет?