Hide internal printf functions [BZ #18822/21986]
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 22 Aug 2017 14:47:34 +0000 (07:47 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 22 Aug 2017 14:50:57 +0000 (07:50 -0700)
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.

ChangeLog
include/printf.h
stdio-common/printf_fp.c
stdio-common/reg-printf.c
stdlib/strfmon_l.c

index 30fb2b1..3954f25 100644 (file)
--- a/ChangeLog
+++ b/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++
index 7b4d209..d051514 100644 (file)
@@ -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
index 3ed4037..2633a02 100644 (file)
@@ -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,
index cbb9307..fed5a16 100644 (file)
@@ -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)
 
 
index 98554df..1df184e 100644 (file)
 #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)