diff options
author | Joseph Myers <joseph@codesourcery.com> | 2014-11-12 16:22:51 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2014-11-12 16:22:51 +0000 |
commit | 5a6fa4d7ed465c2f7da9d73004c972519dc2100e (patch) | |
tree | cefc8c3b17e8e57731afe93278c12a0d5137bae0 /libio | |
parent | 2581b98ecb1f2b3669a4b88a605f763fa4e85ee6 (diff) | |
download | glibc-5a6fa4d7ed465c2f7da9d73004c972519dc2100e.zip glibc-5a6fa4d7ed465c2f7da9d73004c972519dc2100e.tar.gz glibc-5a6fa4d7ed465c2f7da9d73004c972519dc2100e.tar.bz2 |
Fix tzfile.c namespace (bug 17583).
tzfile.c is brought in by various ISO C functions, but calls fileno,
fread_unlocked and ftello, which are not ISO C functions. This patch
adds names __fileno, __fread_unlocked and __ftello for those
functions, making tzfile.c use those new names.
Note: there are various uses of fileno elsewhere in glibc that I
didn't change, although it may turn out that some of those also need
to use __fileno.
Tested for x86_64 with the glibc testsuite. Changed line numbers in
tzfile.c cause changes in assertions, and for some reason this ends up
with different instruction choice and register allocation, affecting
the size of __tzfile_read and so making comparison of disassembly for
libc.so problematic.
[BZ #17583]
* libio/fileno.c (fileno): Rename to __fileno and define as weak
alias of __fileno. Use libc_hidden_weak.
(__fileno): Use libc_hidden_def.
[weak_alias] (fileno_unlocked): Define as weak alias of __fileno.
* libio/ftello.c (ftello): Rename to __ftello and define as weak
alias of __ftello.
[__OFF_T_MATCHES_OFF64_T] (ftello64): Define as weak alias of
__ftello.
* libio/iofread.c [weak_alias && !_IO_MTSAFE_IO]
(__fread_unlocked): Define as strong alias of _IO_fread. Use
libc_hidden_def.
(fread_unlocked): Don't use libc_hidden_ver.
* libio/iofread_u.c (fread_unlocked): Rename to __fread_unlocked
and define as weak alias of __fread_unlocked. Don't use
libc_hidden_def.
(__fread_unlocked): Use libc_hidden_def.
* include/stdio.h (__fileno): Declare. Use libc_hidden_proto.
(ftello): Don't use libc_hidden_proto.
(__ftello): Declare. Use libc_hidden_proto.
(fread_unlocked): Don't use libc_hidden_proto.
(__fread_unlocked): Declare. Use libc_hidden_proto.
* time/tzfile.c (__tzfile_read): Use __fileno, __fread_unlocked
and __ftello instead of fileno, fread_unlocked and ftello.
Diffstat (limited to 'libio')
-rw-r--r-- | libio/fileno.c | 8 | ||||
-rw-r--r-- | libio/ftello.c | 7 | ||||
-rw-r--r-- | libio/iofread.c | 3 | ||||
-rw-r--r-- | libio/iofread_u.c | 5 |
4 files changed, 14 insertions, 9 deletions
diff --git a/libio/fileno.c b/libio/fileno.c index 92b0332..411ea0e 100644 --- a/libio/fileno.c +++ b/libio/fileno.c @@ -28,7 +28,7 @@ #include <stdio.h> int -fileno (fp) +__fileno (fp) _IO_FILE* fp; { CHECK_FILE (fp, EOF); @@ -41,12 +41,14 @@ fileno (fp) return _IO_fileno (fp); } -libc_hidden_def (fileno) +libc_hidden_def (__fileno) +weak_alias (__fileno, fileno) +libc_hidden_weak (fileno) #ifdef weak_alias /* The fileno implementation for libio does not require locking because it only accesses once a single variable and this is already atomic (at least at thread level). Therefore we don't test _IO_MTSAFE_IO here. */ -weak_alias (fileno, fileno_unlocked) +weak_alias (__fileno, fileno_unlocked) #endif diff --git a/libio/ftello.c b/libio/ftello.c index 208ff8c..33a2160 100644 --- a/libio/ftello.c +++ b/libio/ftello.c @@ -31,7 +31,7 @@ off_t -ftello (fp) +__ftello (fp) _IO_FILE *fp; { _IO_off64_t pos; @@ -61,8 +61,9 @@ ftello (fp) } return pos; } -libc_hidden_def (ftello) +libc_hidden_def (__ftello) +weak_alias (__ftello, ftello) #ifdef __OFF_T_MATCHES_OFF64_T -weak_alias (ftello, ftello64) +weak_alias (__ftello, ftello64) #endif diff --git a/libio/iofread.c b/libio/iofread.c index ca792a2..a9d6282 100644 --- a/libio/iofread.c +++ b/libio/iofread.c @@ -49,7 +49,8 @@ libc_hidden_def (_IO_fread) weak_alias (_IO_fread, fread) # ifndef _IO_MTSAFE_IO +strong_alias (_IO_fread, __fread_unlocked) +libc_hidden_def (__fread_unlocked) weak_alias (_IO_fread, fread_unlocked) -libc_hidden_ver (_IO_fread, fread_unlocked) # endif #endif diff --git a/libio/iofread_u.c b/libio/iofread_u.c index 5e46225..f0059b4 100644 --- a/libio/iofread_u.c +++ b/libio/iofread_u.c @@ -30,7 +30,7 @@ #undef fread_unlocked _IO_size_t -fread_unlocked (buf, size, count, fp) +__fread_unlocked (buf, size, count, fp) void *buf; _IO_size_t size; _IO_size_t count; @@ -44,4 +44,5 @@ fread_unlocked (buf, size, count, fp) bytes_read = _IO_sgetn (fp, (char *) buf, bytes_requested); return bytes_requested == bytes_read ? count : bytes_read / size; } -libc_hidden_def (fread_unlocked) +libc_hidden_def (__fread_unlocked) +weak_alias (__fread_unlocked, fread_unlocked) |