@@ -22,11 +22,9 @@
#include <kernel_stat.h>
#include <sysdep.h>
#include <xstatconv.h>
-#include <shlib-compat.h>
/* Get information about the file NAME in BUF. */
int
-attribute_compat_text_section
__fxstat64 (int vers, int fd, struct stat64 *buf)
{
switch (vers)
@@ -44,12 +42,4 @@ __fxstat64 (int vers, int fd, struct stat64 *buf)
}
}
}
-
-#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
-strong_alias (__fxstat64, __fxstat_compat)
-compat_symbol (libc, __fxstat_compat, __fxstat, GLIBC_2_0);
-#endif
-
-#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_33)
-compat_symbol (libc, __fxstat64, __fxstat64, GLIBC_2_1);
-#endif
+strong_alias (__fxstat64, __fxstat);
@@ -22,18 +22,11 @@
#include <kernel_stat.h>
#include <sysdep.h>
#include <xstatconv.h>
-#include <shlib-compat.h>
-#if SHLIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33)
/* Get information about the file NAME in BUF. */
int
-attribute_compat_text_section
__fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag)
{
return INLINE_SYSCALL_CALL (fstatat64, fd, file, st, flag);
}
-strong_alias (__fxstatat64, __fxstatat_compat)
-compat_symbol (libc, __fxstatat_compat, __fxstatat, GLIBC_2_4);
-
-compat_symbol (libc, __fxstatat64, __fxstatat64, GLIBC_2_4);
-#endif
+strong_alias (__fxstatat64, __fxstatat);
@@ -23,11 +23,9 @@
#include <kernel_stat.h>
#include <sysdep.h>
#include <xstatconv.h>
-#include <shlib-compat.h>
/* Get information about the file NAME in BUF. */
int
-attribute_compat_text_section
__lxstat64 (int vers, const char *name, struct stat64 *buf)
{
switch (vers)
@@ -45,12 +43,4 @@ __lxstat64 (int vers, const char *name, struct stat64 *buf)
}
}
}
-
-#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
-strong_alias (__lxstat64, __lxstat_compat)
-compat_symbol (libc, __lxstat_compat, __lxstat, GLIBC_2_0);
-#endif
-
-#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_33)
-compat_symbol (libc, __lxstat64, __lxstat64, GLIBC_2_1);
-#endif
+weak_alias (__lxstat64, __lxstat);
@@ -23,11 +23,9 @@
#include <kernel_stat.h>
#include <sysdep.h>
#include <xstatconv.h>
-#include <shlib-compat.h>
/* Get information about the file NAME in BUF. */
int
-attribute_compat_text_section
__xstat64 (int vers, const char *name, struct stat64 *buf)
{
switch (vers)
@@ -45,12 +43,4 @@ __xstat64 (int vers, const char *name, struct stat64 *buf)
}
}
}
-
-#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
-strong_alias (__xstat64, __xstat_compat)
-compat_symbol (libc, __xstat_compat, __xstat, GLIBC_2_0);
-#endif
-
-#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_33)
-compat_symbol (libc, __xstat64, __xstat64, GLIBC_2_1);
-#endif
+weak_alias (__xstat64, __xstat);
@@ -20,49 +20,46 @@
#include <fcntl.h>
#include <kernel_stat.h>
#include <sysdep.h>
+#include <shlib-compat.h>
-#if !XSTAT_IS_XSTAT64
-# include <xstatconv.h>
-# include <xstatover.h>
-# include <shlib-compat.h>
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
-# if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
+# if !XSTAT_IS_XSTAT64
+# include <xstatconv.h>
+# include <xstatover.h>
/* Get information about the file FD in BUF. */
int
-attribute_compat_text_section
__fxstat (int vers, int fd, struct stat *buf)
{
switch (vers)
{
case _STAT_VER_KERNEL:
{
-# if STAT_IS_KERNEL_STAT
+# if STAT_IS_KERNEL_STAT
/* New kABIs which uses generic pre 64-bit time Linux ABI,
e.g. csky, nios2 */
int r = INLINE_SYSCALL_CALL (fstat64, fd, buf);
return r ?: stat_overflow (buf);
-# else
+# else
/* Old kABIs with old non-LFS support, e.g. arm, i386, hppa, m68k,
microblaze, s390, sh, powerpc, and sparc. */
return INLINE_SYSCALL_CALL (fstat, fd, buf);
-# endif
+# endif
}
default:
{
-# if STAT_IS_KERNEL_STAT
+# if STAT_IS_KERNEL_STAT
return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL);
-# else
+# else
struct stat64 buf64;
int r = INLINE_SYSCALL_CALL (fstat64, fd, &buf64);
return r ?: __xstat32_conv (vers, &buf64, buf);
-#endif
+# endif
}
}
}
+# endif /* XSTAT_IS_XSTAT64 */
-compat_symbol (libc, __fxstat, __fxstat, GLIBC_2_0);
-# endif /* SHLIB_COMPAT */
-
-#endif /* XSTAT_IS_XSTAT64 */
+#endif /* SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) */
@@ -27,15 +27,13 @@
#include <shlib-compat.h>
#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
-
/* Get information about the file FD in BUF. */
int
-attribute_compat_text_section
___fxstat64 (int vers, int fd, struct stat64 *buf)
{
-#if XSTAT_IS_XSTAT64
-# ifdef __NR_fstat64
+# if XSTAT_IS_XSTAT64
+# ifdef __NR_fstat64
/* 64-bit kABI outlier, e.g. sparc64. */
if (vers == _STAT_VER_KERNEL)
return INLINE_SYSCALL_CALL (fstat, fd, buf);
@@ -45,13 +43,13 @@ ___fxstat64 (int vers, int fd, struct stat64 *buf)
int r = INLINE_SYSCALL_CALL (fstat64, fd, &st64);
return r ?: __xstat32_conv (vers, &st64, (struct stat *) buf);
}
-# elif defined __NR_fstat
+# elif defined __NR_fstat
/* 64-bit kABI, e.g. aarch64, ia64, powerpc64*, s390x, riscv64,
and x86_64. */
if (vers == _STAT_VER_KERNEL || vers == _STAT_VER_LINUX)
return INLINE_SYSCALL_CALL (fstat, fd, buf);
return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL);
-# else
+# else
/* New 32-bit kABIs with only 64-bit time_t support, e.g. arc, riscv32. */
struct statx tmp;
int r = INLINE_SYSCALL_CALL (statx, fd, "", AT_EMPTY_PATH,
@@ -59,26 +57,24 @@ ___fxstat64 (int vers, int fd, struct stat64 *buf)
if (r == 0)
__cp_stat64_statx (buf, &tmp);
return r;
-# endif
-#else
+# endif
+# else
/* All kABIs with non-LFS support, e.g. arm, csky, i386, hppa, m68k,
microblaze, mips32, nios2, sh, powerpc32, and sparc32. */
return INLINE_SYSCALL_CALL (fstat64, fd, buf);
-#endif /* XSTAT_IS_XSTAT64 */
+# endif /* XSTAT_IS_XSTAT64 */
}
-#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
-compat_symbol (libc, ___fxstat64, __fxstat64, GLIBC_2_2);
+# if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
+versioned_symbol (libc, ___fxstat64, __fxstat64, GLIBC_2_2);
strong_alias (___fxstat64, __old__fxstat64)
compat_symbol (libc, __old__fxstat64, __fxstat64, GLIBC_2_1);
-#else
+# else
strong_alias (___fxstat64, __fxstat64)
-compat_symbol (libc, ___fxstat64, __fxstat64, GLIBC_2_2);
-#endif
+# endif
-#if XSTAT_IS_XSTAT64
-strong_alias (___fxstat64, __fxstat_compat)
-compat_symbol (libc, __fxstat_compat, __fxstat, GLIBC_2_2);
-#endif
+# if XSTAT_IS_XSTAT64
+strong_alias (__fxstat64, __fxstat);
+# endif
-#endif /* SHLIB_COMPAT */
+#endif /* SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) */
@@ -20,20 +20,19 @@
#include <fcntl.h>
#include <kernel_stat.h>
#include <sysdep.h>
+#include <shlib-compat.h>
-#if !XSTAT_IS_XSTAT64
-# include <xstatconv.h>
-# include <xstatover.h>
-# include <shlib-compat.h>
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
-# if SHLIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33)
+# if !XSTAT_IS_XSTAT64
+# include <xstatconv.h>
+# include <xstatover.h>
/* Get information about the file FD in BUF. */
int
-attribute_compat_text_section
__fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
{
-#if STAT_IS_KERNEL_STAT
+# if STAT_IS_KERNEL_STAT
/* New kABIs which uses generic pre 64-bit time Linux ABI, e.g.
csky, nios2 */
if (vers == _STAT_VER_KERNEL)
@@ -42,16 +41,14 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
return r ?: stat_overflow (st);
}
return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL);
-#else
+# else
/* Old kABIs with old non-LFS support, e.g. arm, i386, hppa, m68k, mips32,
microblaze, s390, sh, powerpc32, and sparc32. */
struct stat64 st64;
int r = INLINE_SYSCALL_CALL (fstatat64, fd, file, &st64, flag);
return r ?: __xstat32_conv (vers, &st64, st);
-#endif
+# endif
}
+# endif /* XSTAT_IS_XSTAT64 */
-compat_symbol (libc, __fxstatat, __fxstatat, GLIBC_2_4);
-# endif /* SHLIB_COMPAT */
-
-#endif /* XSTAT_IS_XSTAT64 */
+#endif /* SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) */
@@ -26,26 +26,25 @@
#include <statx_cp.h>
#include <shlib-compat.h>
-#if SHLIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33)
-
/* Get information about the file FD in BUF. */
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
+
int
-attribute_compat_text_section
__fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag)
{
-#if XSTAT_IS_XSTAT64
-# ifdef __NR_newfstatat
+# if XSTAT_IS_XSTAT64
+# ifdef __NR_newfstatat
/* 64-bit kABI, e.g. aarch64, ia64, powerpc64*, s390x, riscv64, and
x86_64. */
if (vers == _STAT_VER_KERNEL || vers == _STAT_VER_LINUX)
return INLINE_SYSCALL_CALL (newfstatat, fd, file, st, flag);
-# elif defined __NR_fstatat64
+# elif defined __NR_fstatat64
/* 64-bit kABI outlier, e.g. sparc64. */
struct stat64 st64;
int r = INLINE_SYSCALL_CALL (fstatat64, fd, file, &st64, flag);
return r ?: __xstat32_conv (vers, &st64, (struct stat *) st);
-# else
+# else
/* New 32-bit kABIs with only 64-bit time_t support, e.g. arc, riscv32. */
if (vers == _STAT_VER_KERNEL)
{
@@ -56,21 +55,17 @@ __fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag)
__cp_stat64_statx (st, &tmp);
return r;
}
-# endif
-#else
+# endif
+# else
/* All kABIs with non-LFS support, e.g. arm, csky, i386, hppa, m68k,
microblaze, mips32, nios2, sh, powerpc32, and sparc32. */
if (vers == _STAT_VER_LINUX)
return INLINE_SYSCALL_CALL (fstatat64, fd, file, st, flag);
-#endif
+# endif
return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL);
}
+# if XSTAT_IS_XSTAT64
+strong_alias (__fxstatat64, __fxstatat);
+# endif
-compat_symbol (libc, __fxstatat64, __fxstatat64, GLIBC_2_4);
-
-#if XSTAT_IS_XSTAT64
-strong_alias (__fxstatat64, __fxstatat_compat)
-compat_symbol (libc, __fxstatat_compat, __fxstatat, GLIBC_2_4);
-#endif
-
-#endif /* SHLIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33) */
+#endif /* SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) */
@@ -22,48 +22,45 @@
#include <sysdep.h>
#include <shlib-compat.h>
-#if !XSTAT_IS_XSTAT64
-# include <xstatconv.h>
-# include <xstatover.h>
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
-# if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
+# if !XSTAT_IS_XSTAT64
+# include <xstatconv.h>
+# include <xstatover.h>
/* Get information about the file NAME in BUF. */
int
-attribute_compat_text_section
__lxstat (int vers, const char *name, struct stat *buf)
{
switch (vers)
{
case _STAT_VER_KERNEL:
{
-# if STAT_IS_KERNEL_STAT
+# if STAT_IS_KERNEL_STAT
/* New kABIs which uses generic pre 64-bit time Linux ABI,
e.g. csky, nios2 */
int r = INLINE_SYSCALL_CALL (fstatat64, AT_FDCWD, name, buf,
AT_SYMLINK_NOFOLLOW);
return r ?: stat_overflow (buf);
-# else
+# else
/* Old kABIs with old non-LFS support, e.g. arm, i386, hppa, m68k,
microblaze, s390, sh, powerpc, and sparc. */
return INLINE_SYSCALL_CALL (lstat, name, buf);
-# endif
+# endif
}
default:
{
-# if STAT_IS_KERNEL_STAT
+# if STAT_IS_KERNEL_STAT
return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL);
-# else
+# else
struct stat64 buf64;
int r = INLINE_SYSCALL_CALL (lstat64, name, &buf64);
return r ?: __xstat32_conv (vers, &buf64, buf);
-#endif
+# endif
}
}
}
+# endif /* XSTAT_IS_XSTAT64 */
-compat_symbol (libc, __lxstat, __lxstat, GLIBC_2_0);
-# endif /* SHLIB_COMPAT */
-
-#endif /* XSTAT_IS_XSTAT64 */
+#endif /* #if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) */
@@ -26,16 +26,14 @@
#include <statx_cp.h>
#include <shlib-compat.h>
-#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_33)
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
/* Get information about the file NAME in BUF. */
-
int
-attribute_compat_text_section
___lxstat64 (int vers, const char *name, struct stat64 *buf)
{
-#if XSTAT_IS_XSTAT64
-# ifdef __NR_lstat64
+# if XSTAT_IS_XSTAT64
+# ifdef __NR_lstat64
/* 64-bit kABI outlier, e.g. sparc64. */
if (vers == _STAT_VER_KERNEL)
return INLINE_SYSCALL_CALL (lstat, name, buf);
@@ -45,16 +43,16 @@ ___lxstat64 (int vers, const char *name, struct stat64 *buf)
int r = INLINE_SYSCALL_CALL (lstat64, name, &st64);
return r ?: __xstat32_conv (vers, &st64, (struct stat *) buf);
}
-# elif defined __NR_lstat
+# elif defined __NR_lstat
/* Old 64-bit kABI, e.g. ia64, powerpc64*, s390x, and x86_64. */
if (vers == _STAT_VER_KERNEL || vers == _STAT_VER_LINUX)
return INLINE_SYSCALL_CALL (lstat, name, buf);
-# elif defined __NR_newfstatat
+# elif defined __NR_newfstatat
/* New kABIs which uses generic 64-bit Linux ABI, e.g. aarch64, riscv64. */
if (vers == _STAT_VER_KERNEL)
return INLINE_SYSCALL_CALL (newfstatat, AT_FDCWD, name, buf,
AT_SYMLINK_NOFOLLOW);
-# else
+# else
/* New 32-bit kABIs with only 64-bit time_t support, e.g. arc, riscv32. */
if (vers == _STAT_VER_KERNEL)
{
@@ -66,36 +64,35 @@ ___lxstat64 (int vers, const char *name, struct stat64 *buf)
__cp_stat64_statx (buf, &tmp);
return r;
}
-# endif
-#else
-# if STAT_IS_KERNEL_STAT
+# endif
+# else
+# if STAT_IS_KERNEL_STAT
/* New kABIs which uses generic pre 64-bit time Linux ABI,
e.g. csky, nios2 */
if (vers == _STAT_VER_KERNEL)
return INLINE_SYSCALL_CALL (fstatat64, AT_FDCWD, name, buf,
AT_SYMLINK_NOFOLLOW);
-# else
+# else
/* Old kABIs with old non-LFS support, e.g. arm, i386, hppa, m68k,
microblaze, s390, sh, mips32, powerpc32, and sparc32. */
return INLINE_SYSCALL_CALL (lstat64, name, buf);
-# endif /* STAT_IS_KERNEL_STAT */
-#endif /* XSTAT_IS_XSTAT64 */
+# endif /* STAT_IS_KERNEL_STAT */
+# endif /* XSTAT_IS_XSTAT64 */
return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL);
}
-#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
-compat_symbol (libc, ___lxstat64, __lxstat64, GLIBC_2_2);
+# if XSTAT_IS_XSTAT64
+weak_alias (___lxstat64, __lxstat);
+weak_alias (___lxstat64, __GI___lxstat);
+# endif
+
+# if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
+versioned_symbol (libc, ___lxstat64, __lxstat64, GLIBC_2_2);
strong_alias (___lxstat64, __old__lxstat64)
compat_symbol (libc, __old__lxstat64, __lxstat64, GLIBC_2_1);
-#else
+# else
strong_alias (___lxstat64, __lxstat64);
-compat_symbol (libc, ___lxstat64, __lxstat64, GLIBC_2_2);
-#endif
-
-#if XSTAT_IS_XSTAT64
-strong_alias (___lxstat64,__lxstat_compat)
-compat_symbol (libc, __lxstat_compat, __lxstat, GLIBC_2_2);
-#endif
+# endif
-#endif /* SHLIB_COMPAT */
+#endif /* SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) */
@@ -21,13 +21,9 @@
#include <kernel_stat.h>
#include <sysdep.h>
#include <xstatconv.h>
-#include <shlib-compat.h>
-
-#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
/* Get information about the file NAME in BUF. */
int
-attribute_compat_text_section
__fxstat (int vers, int fd, struct stat *buf)
{
switch (vers)
@@ -43,7 +39,3 @@ __fxstat (int vers, int fd, struct stat *buf)
}
}
}
-
-compat_symbol (libc, __fxstat, __fxstat, GLIBC_2_0);
-
-#endif
@@ -21,13 +21,9 @@
#include <kernel_stat.h>
#include <sysdep.h>
#include <xstatconv.h>
-#include <shlib-compat.h>
-
-#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
/* Get information about the file NAME in BUF. */
int
-attribute_compat_text_section
__lxstat (int vers, const char *name, struct stat *buf)
{
switch (vers)
@@ -43,7 +39,3 @@ __lxstat (int vers, const char *name, struct stat *buf)
}
}
}
-
-compat_symbol (libc, __lxstat, __lxstat, GLIBC_2_0);
-
-#endif
@@ -20,14 +20,10 @@
#include <kernel_stat.h>
#include <sysdep.h>
#include <xstatconv.h>
-#include <shlib-compat.h>
-
-#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_33)
/* Get information about the file FD in BUF. */
int
-attribute_compat_text_section
__fxstat64 (int vers, int fd, struct stat64 *buf)
{
struct kernel_stat kbuf;
@@ -35,7 +31,3 @@ __fxstat64 (int vers, int fd, struct stat64 *buf)
return r ?: __xstat64_conv (vers, &kbuf, buf);
}
-
-compat_symbol (libc, __fxstat64, __fxstat64, GLIBC_2_2);
-
-#endif
@@ -21,20 +21,12 @@
#include <kernel_stat.h>
#include <sysdep.h>
#include <xstatconv.h>
-#include <shlib-compat.h>
-
-#if SHLIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33)
/* Get information about the file FD in BUF. */
int
-attribute_compat_text_section
__fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
{
struct kernel_stat kst;
int r = INLINE_SYSCALL_CALL (newfstatat, fd, file, &kst, flag);
return r ?: __xstat_conv (vers, &kst, st);
}
-
-compat_symbol (libc, __fxstatat, __fxstatat, GLIBC_2_4);
-
-#endif
@@ -19,14 +19,10 @@
#include <kernel_stat.h>
#include <sysdep.h>
#include <xstatconv.h>
-#include <shlib-compat.h>
-
-#if SHLIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33)
/* Get information about the file NAME in BUF. */
int
-attribute_compat_text_section
__fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag)
{
if (vers == _STAT_VER_LINUX)
@@ -37,7 +33,3 @@ __fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag)
}
return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL);
}
-
-compat_symbol (libc, __fxstatat64, __fxstatat64, GLIBC_2_4);
-
-#endif
@@ -20,20 +20,12 @@
#include <kernel_stat.h>
#include <sysdep.h>
#include <xstatconv.h>
-#include <shlib-compat.h>
-
-#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_33)
/* Get information about the file NAME in BUF. */
int
-attribute_compat_text_section
__lxstat64 (int vers, const char *name, struct stat64 *buf)
{
struct kernel_stat kbuf;
int r = INLINE_SYSCALL_CALL (lstat, name, &kbuf);
return r ?: __xstat64_conv (vers, &kbuf, buf);
}
-
-compat_symbol (libc, __lxstat64, __lxstat64, GLIBC_2_2);
-
-#endif
@@ -20,20 +20,13 @@
#include <kernel_stat.h>
#include <sysdep.h>
#include <xstatconv.h>
-#include <shlib-compat.h>
-
-#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_33)
/* Get information about the file NAME in BUF. */
+
int
-attribute_compat_text_section
__xstat64 (int vers, const char *name, struct stat64 *buf)
{
struct kernel_stat kbuf;
int r = INLINE_SYSCALL_CALL (stat, name, &kbuf);
return r ?: __xstat64_conv (vers, &kbuf, buf);
}
-
-compat_symbol (libc, __xstat64, __xstat64, GLIBC_2_2);
-
-#endif
@@ -21,13 +21,9 @@
#include <kernel_stat.h>
#include <sysdep.h>
#include <xstatconv.h>
-#include <shlib-compat.h>
-
-#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
/* Get information about the file NAME in BUF. */
int
-attribute_compat_text_section
__xstat (int vers, const char *name, struct stat *buf)
{
switch (vers)
@@ -43,7 +39,3 @@ __xstat (int vers, const char *name, struct stat *buf)
}
}
}
-
-compat_symbol (libc, __xstat, __xstat, GLIBC_2_0);
-
-#endif
@@ -22,47 +22,44 @@
#include <sysdep.h>
#include <shlib-compat.h>
-#if !XSTAT_IS_XSTAT64
-# include <xstatconv.h>
-# include <xstatover.h>
+#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
-# if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
+# if !XSTAT_IS_XSTAT64
+# include <xstatconv.h>
+# include <xstatover.h>
/* Get information about the file NAME in BUF. */
int
-attribute_compat_text_section
__xstat (int vers, const char *name, struct stat *buf)
{
switch (vers)
{
case _STAT_VER_KERNEL:
{
-# if STAT_IS_KERNEL_STAT
+# if STAT_IS_KERNEL_STAT
/* New kABIs which uses generic pre 64-bit time Linux ABI,
e.g. csky, nios2 */
int r = INLINE_SYSCALL_CALL (fstatat64, AT_FDCWD, name, buf, 0);
return r ?: stat_overflow (buf);
-# else
+# else
/* Old kABIs with old non-LFS support, e.g. arm, i386, hppa, m68k,
microblaze, s390, sh, powerpc, and sparc32. */
return INLINE_SYSCALL_CALL (stat, name, buf);
-# endif
+# endif
}
default:
{
-# if STAT_IS_KERNEL_STAT
+# if STAT_IS_KERNEL_STAT
return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL);
-# else
+# else
struct stat64 buf64;
int r = INLINE_SYSCALL_CALL (stat64, name, &buf64);
return r ?: __xstat32_conv (vers, &buf64, buf);
-#endif
+# endif
}
}
}
+# endif /* XSTAT_IS_XSTAT64 */
-compat_symbol (libc, __xstat, __xstat, GLIBC_2_0);
-# endif /* SHLIB_COMPAT */
-
-#endif /* XSTAT_IS_XSTAT64 */
+#endif /* SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) */
@@ -29,13 +29,11 @@
#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
/* Get information about the file NAME in BUF. */
-
int
-attribute_compat_text_section
___xstat64 (int vers, const char *name, struct stat64 *buf)
{
-#if XSTAT_IS_XSTAT64
-# ifdef __NR_stat64
+# if XSTAT_IS_XSTAT64
+# ifdef __NR_stat64
/* 64-bit kABI outlier, e.g. sparc64. */
if (vers == _STAT_VER_KERNEL)
return INLINE_SYSCALL_CALL (stat, name, buf);
@@ -45,15 +43,15 @@ ___xstat64 (int vers, const char *name, struct stat64 *buf)
int r = INLINE_SYSCALL_CALL (stat64, name, &st64);
return r ?: __xstat32_conv (vers, &st64, (struct stat *) buf);
}
-# elif defined __NR_stat
+# elif defined __NR_stat
/* Old 64-bit kABI, e.g. ia64, powerpc64*, s390x, and x86_64. */
if (vers == _STAT_VER_KERNEL || vers == _STAT_VER_LINUX)
return INLINE_SYSCALL_CALL (stat, name, buf);
-# elif defined __NR_newfstatat
+# elif defined __NR_newfstatat
/* New kABIs which uses generic 64-bit Linux ABI, e.g. aarch64, riscv64. */
if (vers == _STAT_VER_KERNEL)
return INLINE_SYSCALL_CALL (newfstatat, AT_FDCWD, name, buf, 0);
-# else
+# else
/* New 32-bit kABIs with only 64-bit time_t support, e.g. arc, riscv32. */
if (vers == _STAT_VER_KERNEL)
{
@@ -64,35 +62,34 @@ ___xstat64 (int vers, const char *name, struct stat64 *buf)
__cp_stat64_statx (buf, &tmp);
return r;
}
-# endif
-#else
-# if STAT_IS_KERNEL_STAT
+# endif
+# else
+# if STAT_IS_KERNEL_STAT
/* New kABIs which uses generic pre 64-bit time Linux ABI,
e.g. csky, nios2 */
if (vers == _STAT_VER_KERNEL)
return INLINE_SYSCALL_CALL (fstatat64, AT_FDCWD, name, buf, 0);
-# else
+# else
/* Old kABIs with old non-LFS support, e.g. arm, i386, hppa, m68k,
microblaze, s390, sh, mips32, powerpc32, and sparc32. */
return INLINE_SYSCALL_CALL (stat64, name, buf);
-# endif /* STAT_IS_KERNEL_STAT */
-#endif /* XSTAT_IS_XSTAT64 */
+# endif /* STAT_IS_KERNEL_STAT */
+# endif /* XSTAT_IS_XSTAT64 */
return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL);
}
-#if XSTAT_IS_XSTAT64
-strong_alias (___xstat64, __xstat_compat)
-compat_symbol (libc, __xstat_compat, __xstat, GLIBC_2_2);
-#endif
+# if XSTAT_IS_XSTAT64
+weak_alias (___xstat64, __xstat);
+weak_alias (___xstat64, __GI___xstat);
+# endif
-#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
-compat_symbol (libc, ___xstat64, __xstat64, GLIBC_2_2);
+# if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
+versioned_symbol (libc, ___xstat64, __xstat64, GLIBC_2_2);
strong_alias (___xstat64, __old__xstat64)
compat_symbol (libc, __old__xstat64, __xstat64, GLIBC_2_1);
-#else
+# else
strong_alias (___xstat64, __xstat64)
-compat_symbol (libc, ___xstat64, __xstat64, GLIBC_2_2);
-#endif
+# endif
-#endif /* SHLIB_COMPAT */
+#endif /* SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) */