diff options
author | Steve Ellcey <sellcey@caviumnetworks.com> | 2016-11-22 09:59:12 -0800 |
---|---|---|
committer | Steve Ellcey <sellcey@caviumnetworks.com> | 2016-11-22 09:59:12 -0800 |
commit | 510abe7b945ddab6f4497e7c097cff677286bb4d (patch) | |
tree | 9f176df59689a00bc0b132390e152d6f17d7ff8d | |
parent | 65a77b558513ab54018b237f6570d27d12b6ee97 (diff) | |
download | glibc-510abe7b945ddab6f4497e7c097cff677286bb4d.tar.gz glibc-510abe7b945ddab6f4497e7c097cff677286bb4d.tar.xz glibc-510abe7b945ddab6f4497e7c097cff677286bb4d.zip |
Allow [f]statfs64 to alias [f]statfs
* sysdeps/unix/sysv/linux/fstatfs64.c: Hide prototypes for fstatfs and __fstatfs. Make them aliases of __fstatfs64 if STATFS_IS_STATFS64 is set to non-zero. * sysdeps/unix/sysv/linux/statfs64.c: Ditto for __statfs, statfs, and __statfs64. * sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c: Do not define __fstatfs and fstatfs if STATFS_IS_STATFS64 is non-zero. * sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c: Ditto for __statfs and statfs. * sysdeps/unix/sysv/linux/alpha/kernel_stat.h: Set STATFS_IS_STATFS64 to 0. * sysdeps/unix/sysv/linux/generic/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/hppa/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/ia64/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/microblaze/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/sparc/sparc32/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/sparc/sparc64/kernel_stat.h: Ditto. * sysdeps/unix/sysv/linux/x86_64/kernel_stat.h: Ditto.
18 files changed, 81 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 60531095db..a475194fe7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,29 @@ +2016-11-22 Steve Ellcey <sellcey@caviumnetworks.com> + + * sysdeps/unix/sysv/linux/fstatfs64.c: Hide prototypes for fstatfs + and __fstatfs. Make them aliases of __fstatfs64 if + STATFS_IS_STATFS64 is set to non-zero. + * sysdeps/unix/sysv/linux/statfs64.c: Ditto for __statfs, statfs, + and __statfs64. + * sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c: Do not + define __fstatfs and fstatfs if STATFS_IS_STATFS64 is non-zero. + * sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c: Ditto + for __statfs and statfs. + * sysdeps/unix/sysv/linux/alpha/kernel_stat.h: Set STATFS_IS_STATFS64 + to 0. + * sysdeps/unix/sysv/linux/generic/kernel_stat.h: Ditto. + * sysdeps/unix/sysv/linux/hppa/kernel_stat.h: Ditto. + * sysdeps/unix/sysv/linux/ia64/kernel_stat.h: Ditto. + * sysdeps/unix/sysv/linux/kernel_stat.h: Ditto. + * sysdeps/unix/sysv/linux/microblaze/kernel_stat.h: Ditto. + * sysdeps/unix/sysv/linux/mips/kernel_stat.h: Ditto. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h: Ditto. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel_stat.h: Ditto. + * sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h: Ditto. + * sysdeps/unix/sysv/linux/sparc/sparc32/kernel_stat.h: Ditto. + * sysdeps/unix/sysv/linux/sparc/sparc64/kernel_stat.h: Ditto. + * sysdeps/unix/sysv/linux/x86_64/kernel_stat.h: Ditto. + 2016-11-22 Andreas Schwab <schwab@suse.de> * misc/mkstemp.c: Include <fcntl.h>. diff --git a/sysdeps/unix/sysv/linux/alpha/kernel_stat.h b/sysdeps/unix/sysv/linux/alpha/kernel_stat.h index 6708411407..d637e099cf 100644 --- a/sysdeps/unix/sysv/linux/alpha/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/alpha/kernel_stat.h @@ -86,3 +86,4 @@ struct glibc21_stat }; #define XSTAT_IS_XSTAT64 1 +#define STATFS_IS_STATFS64 0 diff --git a/sysdeps/unix/sysv/linux/fstatfs64.c b/sysdeps/unix/sysv/linux/fstatfs64.c index a624de697b..a95fe187ca 100644 --- a/sysdeps/unix/sysv/linux/fstatfs64.c +++ b/sysdeps/unix/sysv/linux/fstatfs64.c @@ -16,9 +16,18 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ +/* Hide the prototypes for __fstatfs and fstatfs so that GCC will not + complain about the different function signatures if they are aliased + to __fstat64. If STATFS_IS_STATFS64 is not zero then the statfs and + statfs64 structures have an identical layout but different type names. */ + +#define __fstatfs __fstatfs_disable +#define fstatfs fstatfs_disable + #include <errno.h> #include <string.h> #include <sys/statfs.h> +#include <kernel_stat.h> #include <stddef.h> #include <sysdep.h> #include <kernel-features.h> @@ -70,3 +79,11 @@ __fstatfs64 (int fd, struct statfs64 *buf) #endif } weak_alias (__fstatfs64, fstatfs64) + +#undef __fstatfs +#undef fstatfs + +#if STATFS_IS_STATFS64 +weak_alias (__fstatfs64, __fstatfs) +weak_alias (__fstatfs64, fstatfs) +#endif diff --git a/sysdeps/unix/sysv/linux/generic/kernel_stat.h b/sysdeps/unix/sysv/linux/generic/kernel_stat.h index 5d5f04b402..ee9ff037f3 100644 --- a/sysdeps/unix/sysv/linux/generic/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/generic/kernel_stat.h @@ -26,3 +26,5 @@ #else # define XSTAT_IS_XSTAT64 0 #endif + +#define STATFS_IS_STATFS64 0 diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c index be9599a3eb..c19993850a 100644 --- a/sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c @@ -18,8 +18,10 @@ #include <errno.h> #include <sys/statfs.h> +#include <kernel_stat.h> #include <stddef.h> +#if !STATFS_IS_STATFS64 #include "overflow.h" /* Return information about the filesystem on which FD resides. */ @@ -30,3 +32,4 @@ __fstatfs (int fd, struct statfs *buf) return rc ?: statfs_overflow (buf); } weak_alias (__fstatfs, fstatfs) +#endif diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c b/sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c index 1937f0555f..6413a54770 100644 --- a/sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c +++ b/sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c @@ -18,8 +18,10 @@ #include <errno.h> #include <sys/statfs.h> +#include <kernel_stat.h> #include <stddef.h> +#if !STATFS_IS_STATFS64 #include "overflow.h" /* Return information about the filesystem on which FILE resides. */ @@ -31,3 +33,4 @@ __statfs (const char *file, struct statfs *buf) } libc_hidden_def (__statfs) weak_alias (__statfs, statfs) +#endif diff --git a/sysdeps/unix/sysv/linux/hppa/kernel_stat.h b/sysdeps/unix/sysv/linux/hppa/kernel_stat.h index 9ffa3ba638..a3ac53a1ef 100644 --- a/sysdeps/unix/sysv/linux/hppa/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/hppa/kernel_stat.h @@ -31,3 +31,4 @@ struct kernel_stat { #define _HAVE_STAT64_NSEC #define XSTAT_IS_XSTAT64 0 +#define STATFS_IS_STATFS64 0 diff --git a/sysdeps/unix/sysv/linux/ia64/kernel_stat.h b/sysdeps/unix/sysv/linux/ia64/kernel_stat.h index 2f6fbb22dd..9541bb51ca 100644 --- a/sysdeps/unix/sysv/linux/ia64/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/ia64/kernel_stat.h @@ -18,3 +18,4 @@ #define STAT_IS_KERNEL_STAT 1 #define XSTAT_IS_XSTAT64 1 +#define STATFS_IS_STATFS64 0 diff --git a/sysdeps/unix/sysv/linux/kernel_stat.h b/sysdeps/unix/sysv/linux/kernel_stat.h index 4354d14f76..eecc962de3 100644 --- a/sysdeps/unix/sysv/linux/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/kernel_stat.h @@ -35,3 +35,4 @@ struct kernel_stat #define _HAVE_STAT64_NSEC #define XSTAT_IS_XSTAT64 0 +#define STATFS_IS_STATFS64 0 diff --git a/sysdeps/unix/sysv/linux/microblaze/kernel_stat.h b/sysdeps/unix/sysv/linux/microblaze/kernel_stat.h index b6ae8c3699..3ce58df8e3 100644 --- a/sysdeps/unix/sysv/linux/microblaze/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/microblaze/kernel_stat.h @@ -49,3 +49,4 @@ struct kernel_stat }; #define XSTAT_IS_XSTAT64 0 +#define STATFS_IS_STATFS64 0 diff --git a/sysdeps/unix/sysv/linux/mips/kernel_stat.h b/sysdeps/unix/sysv/linux/mips/kernel_stat.h index a41d15f95c..388df1bfff 100644 --- a/sysdeps/unix/sysv/linux/mips/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/mips/kernel_stat.h @@ -57,3 +57,4 @@ struct kernel_stat #endif #define XSTAT_IS_XSTAT64 0 +#define STATFS_IS_STATFS64 0 diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h index 0fbde98406..5b76f67c22 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/kernel_stat.h @@ -48,3 +48,4 @@ struct kernel_stat #define _HAVE_STAT64_NSEC #define XSTAT_IS_XSTAT64 0 +#define STATFS_IS_STATFS64 0 diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel_stat.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel_stat.h index fce8fbab91..eec1ab184a 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel_stat.h @@ -18,3 +18,4 @@ #define STAT_IS_KERNEL_STAT 1 #define XSTAT_IS_XSTAT64 1 +#define STATFS_IS_STATFS64 0 diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h b/sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h index 2f6fbb22dd..9541bb51ca 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h @@ -18,3 +18,4 @@ #define STAT_IS_KERNEL_STAT 1 #define XSTAT_IS_XSTAT64 1 +#define STATFS_IS_STATFS64 0 diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/kernel_stat.h b/sysdeps/unix/sysv/linux/sparc/sparc32/kernel_stat.h index eb60236929..a4416009f1 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/kernel_stat.h @@ -32,3 +32,4 @@ struct kernel_stat #define _HAVE_STAT64_NSEC #define XSTAT_IS_XSTAT64 0 +#define STATFS_IS_STATFS64 0 diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/kernel_stat.h b/sysdeps/unix/sysv/linux/sparc/sparc64/kernel_stat.h index 2a26a78d9c..30afb553b9 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/kernel_stat.h @@ -45,3 +45,4 @@ struct kernel_stat64 }; #define XSTAT_IS_XSTAT64 1 +#define STATFS_IS_STATFS64 0 diff --git a/sysdeps/unix/sysv/linux/statfs64.c b/sysdeps/unix/sysv/linux/statfs64.c index de422618fe..4315fe501c 100644 --- a/sysdeps/unix/sysv/linux/statfs64.c +++ b/sysdeps/unix/sysv/linux/statfs64.c @@ -16,9 +16,18 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ +/* Hide the prototypes for __statfs and statfs so that GCC will not + complain about the different function signatures if they are aliased + to __stat64. If STATFS_IS_STATFS64 is not zero then the statfs and + statfs64 structures have an identical layout but different type names. */ + +#define __statfs __statfs_disable +#define statfs statfs_disable + #include <errno.h> #include <string.h> #include <sys/statfs.h> +#include <kernel_stat.h> #include <stddef.h> #include <sysdep.h> #include <kernel-features.h> @@ -72,3 +81,12 @@ __statfs64 (const char *file, struct statfs64 *buf) #endif } weak_alias (__statfs64, statfs64) + +#undef __statfs +#undef statfs + +#if STATFS_IS_STATFS64 +weak_alias (__statfs64, __statfs) +weak_alias (__statfs64, statfs) +libc_hidden_ver (__statfs64, __statfs) +#endif diff --git a/sysdeps/unix/sysv/linux/x86_64/kernel_stat.h b/sysdeps/unix/sysv/linux/x86_64/kernel_stat.h index 2f6fbb22dd..9541bb51ca 100644 --- a/sysdeps/unix/sysv/linux/x86_64/kernel_stat.h +++ b/sysdeps/unix/sysv/linux/x86_64/kernel_stat.h @@ -18,3 +18,4 @@ #define STAT_IS_KERNEL_STAT 1 #define XSTAT_IS_XSTAT64 1 +#define STATFS_IS_STATFS64 0 |