Столкнулся с проблемой: реализовал свои функции printf (на базе реализации от ChaN-а), puts и putchar. Всё отлично линкуется, прототипы объявлены в самописном заголовочном файле. Оптимизация отрабатывает нормально (вместо printf подставляется puts и линкуется куда надо). Прототипы моей реализации совместимы со стандартными
Код
int putchar (int c);
int puts (const char *s);
__attribute__ ((format (printf, 1, 2)))
int printf (const char *fmt, ...);
int puts (const char *s);
__attribute__ ((format (printf, 1, 2)))
int printf (const char *fmt, ...);
Проблема собственно в том что как только я пытаюсь использовать не самописный заголовочный файл, а стандартный stdio.h, линкер пытается тянуть стандартную реализацию. Сужу по ошибкам линкера
Код
/opt/gnurx_v11.03_elf-1/bin/../lib/gcc/rx-elf/4.5-GNURX_v11.03/../../../../rx-elf/lib/libc.a(lib_a-closer.o): In function `__close_r':
closer.c:(.text._close_r+0x10): warning: _close is not implemented and will always fail
/opt/gnurx_v11.03_elf-1/bin/../lib/gcc/rx-elf/4.5-GNURX_v11.03/../../../../rx-elf/lib/libc.a(lib_a-fstatr.o): In function `__fstat_r':
fstatr.c:(.text._fstat_r+0x12): warning: _fstat is not implemented and will always fail
/opt/gnurx_v11.03_elf-1/bin/../lib/gcc/rx-elf/4.5-GNURX_v11.03/../../../../rx-elf/lib/libc.a(lib_a-isattyr.o): In function `__isatty_r':
isattyr.c:(.text._isatty_r+0x10): warning: _isatty is not implemented and will always fail
/opt/gnurx_v11.03_elf-1/bin/../lib/gcc/rx-elf/4.5-GNURX_v11.03/../../../../rx-elf/lib/libc.a(lib_a-lseekr.o): In function `__lseek_r':
lseekr.c:(.text._lseek_r+0x14): warning: _lseek is not implemented and will always fail
/opt/gnurx_v11.03_elf-1/bin/../lib/gcc/rx-elf/4.5-GNURX_v11.03/../../../../rx-elf/lib/libc.a(lib_a-readr.o): In function `__read_r':
readr.c:(.text._read_r+0x14): warning: _read is not implemented and will always fail
/opt/gnurx_v11.03_elf-1/bin/../lib/gcc/rx-elf/4.5-GNURX_v11.03/../../../../rx-elf/lib/libc.a(lib_a-writer.o): In function `__write_r':
writer.c:(.text._write_r+0x14): warning: _write is not implemented and will always fail
closer.c:(.text._close_r+0x10): warning: _close is not implemented and will always fail
/opt/gnurx_v11.03_elf-1/bin/../lib/gcc/rx-elf/4.5-GNURX_v11.03/../../../../rx-elf/lib/libc.a(lib_a-fstatr.o): In function `__fstat_r':
fstatr.c:(.text._fstat_r+0x12): warning: _fstat is not implemented and will always fail
/opt/gnurx_v11.03_elf-1/bin/../lib/gcc/rx-elf/4.5-GNURX_v11.03/../../../../rx-elf/lib/libc.a(lib_a-isattyr.o): In function `__isatty_r':
isattyr.c:(.text._isatty_r+0x10): warning: _isatty is not implemented and will always fail
/opt/gnurx_v11.03_elf-1/bin/../lib/gcc/rx-elf/4.5-GNURX_v11.03/../../../../rx-elf/lib/libc.a(lib_a-lseekr.o): In function `__lseek_r':
lseekr.c:(.text._lseek_r+0x14): warning: _lseek is not implemented and will always fail
/opt/gnurx_v11.03_elf-1/bin/../lib/gcc/rx-elf/4.5-GNURX_v11.03/../../../../rx-elf/lib/libc.a(lib_a-readr.o): In function `__read_r':
readr.c:(.text._read_r+0x14): warning: _read is not implemented and will always fail
/opt/gnurx_v11.03_elf-1/bin/../lib/gcc/rx-elf/4.5-GNURX_v11.03/../../../../rx-elf/lib/libc.a(lib_a-writer.o): In function `__write_r':
writer.c:(.text._write_r+0x14): warning: _write is not implemented and will always fail
Может кто подскажет как объяснить линкеру что так поступать не надо и почему такое происходит?
UPD Стоит только написать на форуме, как ответ находится самостоятельно

Код
(--((_impure_ptr->_stdout))->_w < 0 ? ((_impure_ptr->_stdout))->_w >= ((_impure_ptr->_stdout))->_lbfsize ? (*((_impure_ptr->_stdout))->_p = ('*')), *((_impure_ptr->_stdout))->_p != '\n' ? (int)*((_impure_ptr->_stdout))->_p++ : __swbuf_r(_impure_ptr, '\n', (_impure_ptr->_stdout)) : __swbuf_r(_impure_ptr, (int)('*'), (_impure_ptr->_stdout)) : (*((_impure_ptr->_stdout))->_p = ('*'), (int)*((_impure_ptr->_stdout))->_p++));
что и тянуло библиотечную реализацию. Хотя printf("\n") трансформируется в голый вызов моего putchar.