9d26efa90c
New types printf_arginfo_size_function, printf_va_arg_function. Declare register_printf_specifier, register_printf_modifier, register_printf_type. * stdio-common/printf-parse.h (struct printf_spec): Add size element. (union printf_arg): Add pa_user element. Adjust __printf_arginfo_table type. Add __printf_va_arg_table, __printf_modifier_table, __handle_registered_modifier_mb, and __handle_registered_modifier_wc declarations. * stdio-common/printf-parsemb.c: Recognize registered modifiers. If registered arginfo call failed try normal specifier. * stdio-common/printf-prs.c: Pass additional parameter to arginfo function. * stdio-common/Makefile (routines): Add reg-modifier and reg-type. * stdio-common/Versions: Export register_printf_modifier, register_printf_type, and register_printf_specifier for GLIBC_2.10. * stdio-common/reg-modifier.c: New file. * stdio-common/reg-type.c: New file. * stdio-common/reg-printf.c (__register_printf_specifier): New function. Mostly the old __register_printf_function function but uses locking and type of third parameter changed. (__register_printf_function): Implement using __register_printf_specifier. * stdio-common/vfprintf.c (vfprintf): Collect argument sizes in calls to arginfo functions. Allocate enough memory for user-defined types. Call new va_arg functions to get user-defined types. Try installed handlers even for existing format specifiers first.
64 lines
1.1 KiB
Plaintext
64 lines
1.1 KiB
Plaintext
libc {
|
|
GLIBC_2.0 {
|
|
# global variables
|
|
_sys_errlist; _sys_nerr; _sys_siglist;
|
|
|
|
# functions used in other libraries
|
|
__printf_fp; __vfscanf;
|
|
|
|
# variables in normal name space
|
|
sys_errlist; sys_nerr; sys_sigabbrev; sys_siglist;
|
|
|
|
# a*
|
|
asprintf;
|
|
|
|
# c*
|
|
ctermid; cuserid;
|
|
|
|
# d*
|
|
dprintf;
|
|
|
|
# f*
|
|
flockfile; fprintf; fscanf; ftrylockfile; funlockfile;
|
|
|
|
# g*
|
|
getline; getw;
|
|
|
|
# p*
|
|
parse_printf_format; perror; printf; putw;
|
|
|
|
# r*
|
|
register_printf_function; remove; rename;
|
|
|
|
# s*
|
|
scanf; snprintf; sprintf; sscanf;
|
|
|
|
# t*
|
|
tempnam; tmpfile; tmpnam; tmpnam_r;
|
|
|
|
# v*
|
|
vfprintf; vfscanf; vprintf;
|
|
}
|
|
GLIBC_2.1 {
|
|
# p*
|
|
printf_size; printf_size_info;
|
|
|
|
# t*
|
|
tmpfile; tmpfile64;
|
|
}
|
|
GLIBC_2.4 {
|
|
renameat;
|
|
}
|
|
GLIBC_2.7 {
|
|
__isoc99_scanf; __isoc99_vscanf; __isoc99_fscanf; __isoc99_vfscanf;
|
|
__isoc99_sscanf; __isoc99_vsscanf;
|
|
}
|
|
GLIBC_2.10 {
|
|
psiginfo;
|
|
register_printf_modifier; register_printf_type; register_printf_specifier;
|
|
}
|
|
GLIBC_PRIVATE {
|
|
# global variables
|
|
_itoa_lower_digits;
|
|
}
|