mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
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 a1d84548c8
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.
This commit is contained in:
parent
a16e8bc08e
commit
20962acbea
13
ChangeLog
13
ChangeLog
@ -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++
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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)
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user