[12/58] Mark internal time functions with attribute_hidden [BZ #18822]

Message ID 20170901180029.9527-13-hjl.tools@gmail.com
State Committed
Commit b0f5678494d727b6868435dfc32b066ade6d3e49
Headers

Commit Message

H.J. Lu Sept. 1, 2017, 5:59 p.m. UTC
  Mark internal time functions with attribute_hidden to allow direct
access within libc.so and libc.a without using GOT nor PLT.

	[BZ #18822]
	* include/time.h (__tzstring): Add attribute_hidden.
	(__tzfile_read): Likewise.
	(__tzfile_compute): Likewise.
	(__tzfile_default): Likewise.
	(__tzset_parse_tz): Likewise.
	(__offtime): Likewise.
	(__asctime_r): Likewise.
	(__tzset): Likewise.
	(__tz_convert): Likewise.
	(__getdate_r): Likewise.
	(__getclktck): Likewise.
---
 include/time.h | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)
  

Comments

H.J. Lu Oct. 1, 2017, 10:01 p.m. UTC | #1
On 9/1/17, H.J. Lu <hjl.tools@gmail.com> wrote:
> Mark internal time functions with attribute_hidden to allow direct
> access within libc.so and libc.a without using GOT nor PLT.
>
> 	[BZ #18822]
> 	* include/time.h (__tzstring): Add attribute_hidden.
> 	(__tzfile_read): Likewise.
> 	(__tzfile_compute): Likewise.
> 	(__tzfile_default): Likewise.
> 	(__tzset_parse_tz): Likewise.
> 	(__offtime): Likewise.
> 	(__asctime_r): Likewise.
> 	(__tzset): Likewise.
> 	(__tz_convert): Likewise.
> 	(__getdate_r): Likewise.
> 	(__getclktck): Likewise.

Tested with build-many-glibcs.py.  I am checking it in.
  

Patch

diff --git a/include/time.h b/include/time.h
index e8c07bbfea..aab26d7768 100644
--- a/include/time.h
+++ b/include/time.h
@@ -33,18 +33,19 @@  extern const unsigned short int __mon_yday[2][13] attribute_hidden;
 extern struct tm _tmbuf attribute_hidden;
 
 /* Defined in tzset.c.  */
-extern char *__tzstring (const char *string);
+extern char *__tzstring (const char *string) attribute_hidden;
 
 extern int __use_tzfile attribute_hidden;
 
 extern void __tzfile_read (const char *file, size_t extra,
-			   char **extrap);
+			   char **extrap) attribute_hidden;
 extern void __tzfile_compute (time_t timer, int use_localtime,
 			      long int *leap_correct, int *leap_hit,
-			      struct tm *tp);
+			      struct tm *tp) attribute_hidden;
 extern void __tzfile_default (const char *std, const char *dst,
-			      long int stdoff, long int dstoff);
-extern void __tzset_parse_tz (const char *tz);
+			      long int stdoff, long int dstoff)
+  attribute_hidden;
+extern void __tzset_parse_tz (const char *tz) attribute_hidden;
 extern void __tz_compute (time_t timer, struct tm *tm, int use_localtime)
   __THROW attribute_hidden;
 
@@ -68,22 +69,25 @@  libc_hidden_proto (__gmtime_r)
    Return nonzero if successful.  */
 extern int __offtime (const time_t *__timer,
 		      long int __offset,
-		      struct tm *__tp);
+		      struct tm *__tp) attribute_hidden;
 
-extern char *__asctime_r (const struct tm *__tp, char *__buf);
-extern void __tzset (void);
+extern char *__asctime_r (const struct tm *__tp, char *__buf)
+  attribute_hidden;
+extern void __tzset (void) attribute_hidden;
 
 /* Prototype for the internal function to get information based on TZ.  */
-extern struct tm *__tz_convert (const time_t *timer, int use_localtime, struct tm *tp);
+extern struct tm *__tz_convert (const time_t *timer, int use_localtime,
+				struct tm *tp) attribute_hidden;
 
 extern int __nanosleep (const struct timespec *__requested_time,
 			struct timespec *__remaining);
 hidden_proto (__nanosleep)
-extern int __getdate_r (const char *__string, struct tm *__resbufp);
+extern int __getdate_r (const char *__string, struct tm *__resbufp)
+  attribute_hidden;
 
 
 /* Determine CLK_TCK value.  */
-extern int __getclktck (void);
+extern int __getclktck (void) attribute_hidden;
 
 
 /* strptime support.  */