diff options
author | Joseph Myers <joseph@codesourcery.com> | 2018-02-21 18:01:11 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2018-02-21 18:01:11 +0000 |
commit | 30ac923dbe7d0c16df8a368150ecd736557508f4 (patch) | |
tree | e706b9fa5aac39b4b5aa4357020de158bc4a338d /time | |
parent | 7ec5f9465e732e668d0dc94ac078ba68056d6d0a (diff) | |
download | glibc-30ac923dbe7d0c16df8a368150ecd736557508f4.tar.gz glibc-30ac923dbe7d0c16df8a368150ecd736557508f4.tar.xz glibc-30ac923dbe7d0c16df8a368150ecd736557508f4.zip |
Fix -Os getc_unlocked linknamespace, localplt issues (bug 15105, bug 19463).
Continuing the fixes for linknamespace and localplt test failures with -Os that arise from functions not being inlined in that case, this patch fixes such failures for getc_unlocked. __getc_unlocked already exists; this patch makes it explicitly hidden, calls it where needed for namespace reasons, adds an inline function for it when inline functions are used and adds libc_hidden_proto / libc_hidden_weak for getc_unlocked. Tested for x86_64 (both without -Os to make sure that case continues to work, and with -Os to make sure all the relevant linknamespace and localplt test failures are resolved). Because of other such failures that remain after this patch, neither of the bugs can yet be closed. [BZ #15105] [BZ #19463] * libio/getc_u.c (getc_unlocked): Use libc_hidden_weak. * include/stdio.h [!_ISOMAC] (__getc_unlocked): Use attribute_hidden, and define inline if [__USE_EXTERN_INLINES]. [!_ISOMAC] (getc_unlocked): Use libc_hidden_proto. * misc/getttyent.c (__getttyent): Call __getc_unlocked instead of getc_unlocked. * time/tzfile.c (__tzfile_read): Likewise.
Diffstat (limited to 'time')
-rw-r--r-- | time/tzfile.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/time/tzfile.c b/time/tzfile.c index 1e59fd5abc..3e39723148 100644 --- a/time/tzfile.c +++ b/time/tzfile.c @@ -343,11 +343,11 @@ __tzfile_read (const char *file, size_t extra, char **extrap) sizeof (x), f) != sizeof (x), 0)) goto lose; - c = getc_unlocked (f); + c = __getc_unlocked (f); if (__glibc_unlikely ((unsigned int) c > 1u)) goto lose; types[i].isdst = c; - c = getc_unlocked (f); + c = __getc_unlocked (f); if (__glibc_unlikely ((size_t) c > chars)) /* Bogus index in data file. */ goto lose; @@ -376,7 +376,7 @@ __tzfile_read (const char *file, size_t extra, char **extrap) for (i = 0; i < num_isstd; ++i) { - int c = getc_unlocked (f); + int c = __getc_unlocked (f); if (__glibc_unlikely (c == EOF)) goto lose; types[i].isstd = c != 0; @@ -386,7 +386,7 @@ __tzfile_read (const char *file, size_t extra, char **extrap) for (i = 0; i < num_isgmt; ++i) { - int c = getc_unlocked (f); + int c = __getc_unlocked (f); if (__glibc_unlikely (c == EOF)) goto lose; types[i].isgmt = c != 0; @@ -398,7 +398,7 @@ __tzfile_read (const char *file, size_t extra, char **extrap) if (sizeof (time_t) == 8 && tzspec != NULL) { /* Skip over the newline first. */ - if (getc_unlocked (f) != '\n' + if (__getc_unlocked (f) != '\n' || (__fread_unlocked (tzspec, 1, tzspec_len - 1, f) != tzspec_len - 1)) tzspec = NULL; @@ -440,7 +440,7 @@ __tzfile_read (const char *file, size_t extra, char **extrap) char *tzstr = malloc (tzspec_len); if (tzstr == NULL) goto lose; - if (getc_unlocked (f) != '\n' + if (__getc_unlocked (f) != '\n' || (__fread_unlocked (tzstr, 1, tzspec_len - 1, f) != tzspec_len - 1)) { |