@@ -20,9 +20,9 @@
#ifndef _KERNEL_FEATURES_H
#define _KERNEL_FEATURES_H 1
-#include_next <kernel-features.h>
+#define __ASSUME_ST_INO_64_BIT 0
-#undef __ASSUME_ST_INO_64_BIT
+#include_next <kernel-features.h>
/* There never has been support for fstat64. */
#undef __ASSUME_STATFS64
@@ -33,7 +33,7 @@ ___fxstat64 (int vers, int fd, struct stat64 *buf)
{
int result;
result = INLINE_SYSCALL (fstat64, 2, fd, buf);
-#if defined _HAVE_STAT64___ST_INO && !defined __ASSUME_ST_INO_64_BIT
+#if defined _HAVE_STAT64___ST_INO && !__ASSUME_ST_INO_64_BIT
if (__builtin_expect (!result, 1) && buf->__st_ino != (__ino_t) buf->st_ino)
buf->st_ino = buf->__st_ino;
#endif
@@ -44,9 +44,11 @@
socket-related operations instead of separate syscalls.
__ASSUME_SOCKETCALL is defined for such architectures. */
+#ifndef __ASSUME_ST_INO_64_BIT
/* The changed st_ino field appeared in 2.4.0-test6. However, SH is lame,
and still does not have a 64-bit inode field. */
#define __ASSUME_ST_INO_64_BIT 1
+#endif
/* The statfs64 syscalls are available in 2.5.74 (but not for alpha). */
#define __ASSUME_STATFS64 1
@@ -32,7 +32,7 @@ ___lxstat64 (int vers, const char *name, struct stat64 *buf)
{
int result;
result = INLINE_SYSCALL (lstat64, 2, name, buf);
-#if defined _HAVE_STAT64___ST_INO && !defined __ASSUME_ST_INO_64_BIT
+#if defined _HAVE_STAT64___ST_INO && !__ASSUME_ST_INO_64_BIT
if (__builtin_expect (!result, 1) && buf->__st_ino != (__ino_t) buf->st_ino)
buf->st_ino = buf->__st_ino;
#endif
@@ -37,10 +37,10 @@
#define __ASSUME_GETSOCKOPT_SYSCALL 1
#define __ASSUME_SETSOCKOPT_SYSCALL 1
+/* SH does not have a 64-bit inode field. */
+#define __ASSUME_ST_INO_64_BIT 0
+
/* The sendmmsg syscall was added for SH in 3.0. */
#define __ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL 1
#include_next <kernel-features.h>
-
-/* SH does not have a 64-bit inode field. */
-#undef __ASSUME_ST_INO_64_BIT
@@ -33,7 +33,7 @@ ___xstat64 (int vers, const char *name, struct stat64 *buf)
{
int result;
result = INLINE_SYSCALL (stat64, 2, name, buf);
-#if defined _HAVE_STAT64___ST_INO && !defined __ASSUME_ST_INO_64_BIT
+#if defined _HAVE_STAT64___ST_INO && !__ASSUME_ST_INO_64_BIT
if (__builtin_expect (!result, 1) && buf->__st_ino != (__ino_t) buf->st_ino)
buf->st_ino = buf->__st_ino;
#endif
@@ -190,7 +190,7 @@ __xstat32_conv (int vers, struct stat64 *kbuf, struct stat *buf)
buf->__pad1 = 0;
#endif
#ifdef _HAVE_STAT64___ST_INO
-# ifndef __ASSUME_ST_INO_64_BIT
+# if !__ASSUME_ST_INO_64_BIT
if (kbuf->st_ino == 0)
buf->st_ino = kbuf->__st_ino;
else
__ASSUME_ST_INO_64_BIT is defined for all ports that use stat syscall routines family under sysdeps/unix/sysv/linux except sh and alpha, and it breaks coding style rules. This patch defines __ASSUME_ST_INO_64_BIT for that ports, and replaces #ifdef with #if over the code where __ASSUME_ST_INO_64_BIT is used. * sysdeps/unix/sysv/linux/kernel-features.h: #define __ASSUME_ST_INO_64_BIT as 1 if not already defines. * sysdeps/unix/sysv/linux/alpha/kernel-features.h: #define __ASSUME_ST_INO_64_BIT as 0 * sysdeps/unix/sysv/linux/sh/kernel-features.h: Likewise. * sysdeps/unix/sysv/linux/fxstat64.c: Replace #ifdef with #if over the code where __ASSUME_ST_INO_64_BIT is used. * sysdeps/unix/sysv/linux/lxstat64.c: Likewise. * sysdeps/unix/sysv/linux/xstat64.c: Likewise. * sysdeps/unix/sysv/linux/xstatconv.c: Likewise. Signed-off-by: Yury Norov <ynorov@caviumnetworks.com> --- sysdeps/unix/sysv/linux/alpha/kernel-features.h | 4 ++-- sysdeps/unix/sysv/linux/fxstat64.c | 2 +- sysdeps/unix/sysv/linux/kernel-features.h | 2 ++ sysdeps/unix/sysv/linux/lxstat64.c | 2 +- sysdeps/unix/sysv/linux/sh/kernel-features.h | 6 +++--- sysdeps/unix/sysv/linux/xstat64.c | 2 +- sysdeps/unix/sysv/linux/xstatconv.c | 2 +- 7 files changed, 11 insertions(+), 9 deletions(-)