]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix pathconf statvfs namespace (bug 18507).
authorJoseph Myers <joseph@codesourcery.com>
Tue, 9 Jun 2015 19:52:01 +0000 (19:52 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Tue, 9 Jun 2015 19:52:01 +0000 (19:52 +0000)
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.

ChangeLog
NEWS
conform/Makefile
sysdeps/unix/sysv/linux/fstatvfs.c
sysdeps/unix/sysv/linux/statvfs.c
sysdeps/unix/sysv/linux/wordsize-64/fstatvfs.c
sysdeps/unix/sysv/linux/wordsize-64/statvfs.c

index 12b0ba8a327a4d598542b5f87ae48060bfa4f36c..39622d67b1fd04862de497825996b895b328429c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2015-06-09  Joseph Myers  <joseph@codesourcery.com>
+
+       [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.
+
 2015-06-09  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
        * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
diff --git a/NEWS b/NEWS
index 53f244d80f722549c2481cc4e5cd4fa16f359bc9..03afc5f497754caf5f04631595ad121b05fa10a7 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -20,7 +20,7 @@ Version 2.22
   18111, 18116, 18125, 18128, 18138, 18185, 18196, 18197, 18206, 18210,
   18211, 18217, 18220, 18221, 18234, 18244, 18247, 18287, 18319, 18324,
   18333, 18346, 18397, 18409, 18410, 18412, 18418, 18422, 18434, 18444,
-  18468, 18469, 18470, 18483, 18495, 18496, 18498.
+  18468, 18469, 18470, 18483, 18495, 18496, 18498, 18507.
 
 * Cache information can be queried via sysconf() function on s390 e.g. with
   _SC_LEVEL1_ICACHE_SIZE as argument.
index 943a1967fbbddf58d89d20b894bbbc5843a77b81..12ccc64b17c5b042a1aad92b313758e5ca647371 100644 (file)
@@ -361,7 +361,6 @@ test-xfail-POSIX/aio.h/linknamespace = yes
 test-xfail-POSIX/mqueue.h/linknamespace = yes
 test-xfail-POSIX/regex.h/linknamespace = yes
 test-xfail-POSIX/semaphore.h/linknamespace = yes
-test-xfail-POSIX/unistd.h/linknamespace = yes
 test-xfail-UNIX98/fmtmsg.h/linknamespace = yes
 test-xfail-UNIX98/mqueue.h/linknamespace = yes
 test-xfail-UNIX98/netdb.h/linknamespace = yes
index 46385269cf5d43e47deef21fb711bbcfad0e7540..1b613302b89243099bf44d01b6da709411bc75b8 100644 (file)
@@ -26,7 +26,7 @@ extern void __internal_statvfs (const char *name, struct statvfs *buf,
 
 
 int
-fstatvfs (int fd, struct statvfs *buf)
+__fstatvfs (int fd, struct statvfs *buf)
 {
   struct statfs fsbuf;
 
@@ -40,4 +40,5 @@ fstatvfs (int fd, struct statvfs *buf)
   /* We signal success if the statfs call succeeded.  */
   return 0;
 }
-libc_hidden_def (fstatvfs)
+weak_alias (__fstatvfs, fstatvfs)
+libc_hidden_weak (fstatvfs)
index 7af2fc5f50411f16df03ba0521583af104e78766..e4ab62a8f75fcfbc105e8a6f4d0fc3e18efecb1a 100644 (file)
@@ -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)
index d04bcd4b5ef3798caeb51c7e032ec09ac05adb8d..5803b6f882ced7b9874ac977af1cb4c0d195ffa6 100644 (file)
@@ -1,5 +1,5 @@
 #define __fstatvfs64(file, buf) __no_fstatvfs64(file, buf)
 #define fstatvfs64(file, buf) no_fstatvfs64(file, buf)
 #include "../fstatvfs.c"
-strong_alias (fstatvfs, __fstatvfs64)
-weak_alias (fstatvfs, fstatvfs64)
+strong_alias (__fstatvfs, __fstatvfs64)
+weak_alias (__fstatvfs, fstatvfs64)
index f369976cc2c164882017c40ab420e1a8b0bb49fc..1e1c96333b1e9dc8e694a349187cdfeafc3823d1 100644 (file)
@@ -1,5 +1,5 @@
 #define __statvfs64(file, buf) __no_statvfs64(file, buf)
 #define statvfs64(file, buf) no_statvfs64(file, buf)
 #include "../statvfs.c"
-strong_alias (statvfs, __statvfs64)
-weak_alias (statvfs, statvfs64)
+strong_alias (__statvfs, __statvfs64)
+weak_alias (__statvfs, statvfs64)