From 800d535504c06f16726f2add8602ee9a36baf808 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Tue, 24 May 2022 08:03:11 +0200 Subject: [PATCH] stdio-common: Add printf specifier registry to Add __printf_arginfo_table, __printf_function_table, __printf_va_arg_table, __register_printf_specifier to include/printf.h. --- include/printf.h | 8 ++++++++ stdio-common/printf-parse.h | 6 ------ stdio-common/printf-prs.c | 1 + stdio-common/reg-printf.c | 7 ------- stdio-common/vfprintf-internal.c | 1 - 5 files changed, 9 insertions(+), 14 deletions(-) diff --git a/include/printf.h b/include/printf.h index 0ed6e87387..fb0b71fa4c 100644 --- a/include/printf.h +++ b/include/printf.h @@ -12,6 +12,14 @@ # ifndef _ISOMAC +/* Internal interfaces for registered specifiers. */ +extern printf_arginfo_size_function **__printf_arginfo_table attribute_hidden; +extern printf_function **__printf_function_table attribute_hidden; +extern printf_va_arg_function **__printf_va_arg_table attribute_hidden; +int __register_printf_specifier (int, printf_function, + printf_arginfo_size_function); +libc_hidden_proto (__register_printf_specifier) + #include /* Now define the internal interfaces. */ diff --git a/stdio-common/printf-parse.h b/stdio-common/printf-parse.h index de0f289c1f..362cce1ead 100644 --- a/stdio-common/printf-parse.h +++ b/stdio-common/printf-parse.h @@ -97,12 +97,6 @@ read_int (const UCHAR_T * *pstr) #endif -/* These are defined in reg-printf.c. */ -extern printf_arginfo_size_function **__printf_arginfo_table attribute_hidden; -extern printf_function **__printf_function_table attribute_hidden; -extern printf_va_arg_function **__printf_va_arg_table attribute_hidden; - - /* Find the next spec in FORMAT, or the end of the string. Returns a pointer into FORMAT, to a '%' or a '\0'. */ __extern_always_inline const unsigned char * diff --git a/stdio-common/printf-prs.c b/stdio-common/printf-prs.c index 55d1c471d7..f2fb9182b8 100644 --- a/stdio-common/printf-prs.c +++ b/stdio-common/printf-prs.c @@ -21,6 +21,7 @@ #include #include #include +#include #include "../locale/localeinfo.h" diff --git a/stdio-common/reg-printf.c b/stdio-common/reg-printf.c index 400b99d2f6..5f4c6a24c2 100644 --- a/stdio-common/reg-printf.c +++ b/stdio-common/reg-printf.c @@ -30,13 +30,6 @@ printf_function **__printf_function_table attribute_hidden; __libc_lock_define_initialized (static, lock) -int __register_printf_specifier (int, printf_function, - printf_arginfo_size_function); -libc_hidden_proto (__register_printf_specifier) -int __register_printf_function (int, printf_function, - printf_arginfo_function); - - /* Register FUNC to be called to format SPEC specifiers. */ int __register_printf_specifier (int spec, printf_function converter, diff --git a/stdio-common/vfprintf-internal.c b/stdio-common/vfprintf-internal.c index 1986c4bdb5..f8aa2fdafb 100644 --- a/stdio-common/vfprintf-internal.c +++ b/stdio-common/vfprintf-internal.c @@ -1379,7 +1379,6 @@ printf_positional (FILE *s, const CHAR_T *format, int readonly_format, /* Process format specifiers. */ while (1) { - extern printf_function **__printf_function_table; int function_done; if (spec <= UCHAR_MAX