diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-08-22 07:47:34 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-08-22 07:50:57 -0700 |
commit | 20962acbea349b372311a727621c860006be3fab (patch) | |
tree | 4081bbaec7c838701452164cf6b0bfa2b8f70b43 | |
parent | a16e8bc08edca84d507715c66d6cddbbc7ed3b62 (diff) | |
download | glibc-20962acbea349b372311a727621c860006be3fab.zip glibc-20962acbea349b372311a727621c860006be3fab.tar.gz glibc-20962acbea349b372311a727621c860006be3fab.tar.bz2 |
Hide internal printf functions [BZ #18822/21986]
Hide internal printf functions to allow direct access within libc.so and
libc.a without using GOT nor PLT.
Since __guess_grouping has been changed to take 2 arguments by
commit a1d84548c8aa7023cd039c85f81b831eef6d4a4c
Author: Ulrich Drepper <drepper@redhat.com>
Date: Fri Feb 11 18:50:36 2000 +0000
the third argument passed to __guess_grouping is removed.
[BZ #18822]
[BZ #21986]
* include/printf.h (__printf_fphex): Add attribute_hidden.
(__guess_grouping): New prototype.
* stdio-common/printf_fp.c (__guess_grouping): Removed.
* stdio-common/reg-printf.c (__register_printf_specifier): Add
libc_hidden_proto and libc_hidden_def.
* stdlib/strfmon_l.c (__guess_grouping): Removed.
(__vstrfmon_l): Remove the third argument passed to
__guess_grouping.
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | include/printf.h | 6 | ||||
-rw-r--r-- | stdio-common/printf_fp.c | 2 | ||||
-rw-r--r-- | stdio-common/reg-printf.c | 2 | ||||
-rw-r--r-- | stdlib/strfmon_l.c | 9 |
5 files changed, 21 insertions, 11 deletions
@@ -1,3 +1,16 @@ +2017-08-22 H.J. Lu <hongjiu.lu@intel.com> + + [BZ #18822] + [BZ #21986] + * include/printf.h (__printf_fphex): Add attribute_hidden. + (__guess_grouping): New prototype. + * stdio-common/printf_fp.c (__guess_grouping): Removed. + * stdio-common/reg-printf.c (__register_printf_specifier): Add + libc_hidden_proto and libc_hidden_def. + * stdlib/strfmon_l.c (__guess_grouping): Removed. + (__vstrfmon_l): Remove the third argument passed to + __guess_grouping. + 2017-08-22 Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com> * math/math.h [defined __cplusplus] (issignaling): Provide a C++ diff --git a/include/printf.h b/include/printf.h index 7b4d209..d051514 100644 --- a/include/printf.h +++ b/include/printf.h @@ -8,7 +8,7 @@ /* Now define the internal interfaces. */ extern int __printf_fphex (FILE *, const struct printf_info *, - const void *const *); + const void *const *) attribute_hidden; extern int __printf_fp (FILE *, const struct printf_info *, const void *const *); libc_hidden_proto (__printf_fp) @@ -16,5 +16,9 @@ extern int __printf_fp_l (FILE *, locale_t, const struct printf_info *, const void *const *); libc_hidden_proto (__printf_fp_l) +extern unsigned int __guess_grouping (unsigned int intdig_max, + const char *grouping) + attribute_hidden; + # endif /* !_ISOMAC */ #endif diff --git a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c index 3ed4037..2633a02 100644 --- a/stdio-common/printf_fp.c +++ b/stdio-common/printf_fp.c @@ -139,8 +139,6 @@ extern mp_size_t __mpn_extract_double (mp_ptr res_ptr, mp_size_t size, extern mp_size_t __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size, int *expt, int *is_neg, long double value); -extern unsigned int __guess_grouping (unsigned int intdig_max, - const char *grouping); static wchar_t *group_number (wchar_t *buf, wchar_t *bufend, diff --git a/stdio-common/reg-printf.c b/stdio-common/reg-printf.c index cbb9307..fed5a16 100644 --- a/stdio-common/reg-printf.c +++ b/stdio-common/reg-printf.c @@ -32,6 +32,7 @@ __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); @@ -72,6 +73,7 @@ __register_printf_specifier (int spec, printf_function converter, return result; } +libc_hidden_def (__register_printf_specifier) weak_alias (__register_printf_specifier, register_printf_specifier) diff --git a/stdlib/strfmon_l.c b/stdlib/strfmon_l.c index 98554df..1df184e 100644 --- a/stdlib/strfmon_l.c +++ b/stdlib/strfmon_l.c @@ -68,11 +68,6 @@ #define _NL_CURRENT(category, item) \ (current->values[_NL_ITEM_INDEX (item)].string) -/* This function determines the number of digit groups in the output. - The definition is in printf_fp.c. */ -extern unsigned int __guess_grouping (unsigned int intdig_max, - const char *grouping, wchar_t sepchar); - /* We have to overcome some problems with this implementation. On the one hand the strfmon() function is specified in XPG4 and of course @@ -324,9 +319,7 @@ __vstrfmon_l (char *s, size_t maxsize, locale_t loc, const char *format, extra characters this means. */ if (group && left_prec != -1) left_prec += __guess_grouping (left_prec, - _NL_CURRENT (LC_MONETARY, MON_GROUPING), - *_NL_CURRENT (LC_MONETARY, - MON_THOUSANDS_SEP)); + _NL_CURRENT (LC_MONETARY, MON_GROUPING)); /* Now it's time to get the value. */ if (is_long_double == 1) |