Я скачал исходный код glibc
(библиотека GNU c
), версия - 2.15.90.Я отслеживал код функции printf()
.Я использую инструменты cscope
и ctags
для просмотра кода.Вот путь, по которому я иду, чтобы понять функцию printf()
.(Здесь я просто упоминаю вызовы функций): -
1. Opening file "glibc/stdio-common/printf.c"
2. int __printf (const char *format, ...)
3. __extern_always_inline int vfprintf (FILE *__restrict __stream, const char *__restrict __fmt, _G_va_list __ap)
4. int attribute_hidden __vfprintf_chk (FILE *s, int flag, const char *fmt, va_list ap)
5. int attribute_compat_text_section __nldbl___vfprintf_chk (FILE *s, int flag, const char *fmt, va_list ap)
Как только я достиг функции \__nldbl___vfprintf_chk()
, происходит вызов __vfprintf_chk()
и, следовательно, последних 2 функций (упомянутых в пунктах 4 и 5)звонит друг другу.Где я ошибся?