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.
This commit is contained in:
Joseph Myers 2015-06-09 19:52:01 +00:00
parent dd26c44403
commit d3ab671c94
7 changed files with 28 additions and 10 deletions

View File

@ -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

2
NEWS
View File

@ -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.

View 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

View 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)

View 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)

View 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)

View 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)