From d3ab671c942ba15a5b20f383ce71e387f17ae2c4 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Tue, 9 Jun 2015 19:52:01 +0000 Subject: Fix pathconf statvfs namespace (bug 18507). pathconf uses __statvfs64, and fpathconf uses __fstatvfs64. On systems using sysdeps/unix/sysv/linux/wordsize-64, __statvfs64 then brings in the strong symbol statvfs, and __fstatvfs64 brings in the strong symbol fstatvfs, which are not in all the standards that have pathconf and fpathconf. This patch fixes this by making those symbols into weak aliases. Tested for x86_64 and x86 (testsuite, and that disassembly of installed shared libraries is unchanged by the patch). [BZ #18507] * sysdeps/unix/sysv/linux/fstatvfs.c (fstatvfs): Rename to __fstatvfs and define as weak alias of __fstatvfs. Use libc_hidden_weak. * sysdeps/unix/sysv/linux/statvfs.c (statvs): Rename to __statvfs and define as weak alias of __statvfs. Use libc_hidden_weak. * sysdeps/unix/sysv/linux/wordsize-64/fstatvfs.c (__fstatvfs64): Define as alias of __fstatvfs, not fstatvfs. (fstatvfs64): Likewise. * sysdeps/unix/sysv/linux/wordsize-64/statvfs.c (__statvfs64): Define as alias of __statvfs, not statvfs. (statvfs64): Likewise. * conform/Makefile (test-xfail-POSIX/unistd.h/linknamespace): Remove variable. --- sysdeps/unix/sysv/linux/statvfs.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'sysdeps/unix/sysv/linux/statvfs.c') diff --git a/sysdeps/unix/sysv/linux/statvfs.c b/sysdeps/unix/sysv/linux/statvfs.c index 7af2fc5f50..e4ab62a8f7 100644 --- a/sysdeps/unix/sysv/linux/statvfs.c +++ b/sysdeps/unix/sysv/linux/statvfs.c @@ -26,7 +26,7 @@ extern void __internal_statvfs (const char *name, struct statvfs *buf, int -statvfs (const char *file, struct statvfs *buf) +__statvfs (const char *file, struct statvfs *buf) { struct statfs fsbuf; @@ -40,4 +40,5 @@ statvfs (const char *file, struct statvfs *buf) /* We signal success if the statfs call succeeded. */ return 0; } -libc_hidden_def (statvfs) +weak_alias (__statvfs, statvfs) +libc_hidden_weak (statvfs) -- cgit 1.4.1