linux: Move {f}xstat{at} to compat symbols

They are no interna uses anymore.  The riscv32 ABI was added on 2.33,
so it is safe to remove the old __{f,l}stat{at} symbols and just
provide the newer {f,l}stat{at} ones.

Checked with a build for all affected ABIs. I also checked on x86_64,
i686, powerpc, powerpc64le, sparcv9, sparc64, s390, and s390x.

Reviewed-by: Lukasz Majewski <lukma@denx.de>
This commit is contained in:
Adhemerval Zanella 2020-07-18 10:21:25 -03:00
parent 6073bae64c
commit 20b39d5946
21 changed files with 181 additions and 31 deletions

View File

@ -22,9 +22,11 @@
#include <kernel_stat.h> #include <kernel_stat.h>
#include <sysdep.h> #include <sysdep.h>
#include <xstatconv.h> #include <xstatconv.h>
#include <shlib-compat.h>
/* Get information about the file NAME in BUF. */ /* Get information about the file NAME in BUF. */
int int
attribute_compat_text_section
__fxstat64 (int vers, int fd, struct stat64 *buf) __fxstat64 (int vers, int fd, struct stat64 *buf)
{ {
switch (vers) switch (vers)
@ -42,4 +44,12 @@ __fxstat64 (int vers, int fd, struct stat64 *buf)
} }
} }
} }
strong_alias (__fxstat64, __fxstat);
#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

View File

@ -22,11 +22,18 @@
#include <kernel_stat.h> #include <kernel_stat.h>
#include <sysdep.h> #include <sysdep.h>
#include <xstatconv.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. */ /* Get information about the file NAME in BUF. */
int int
attribute_compat_text_section
__fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag) __fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag)
{ {
return INLINE_SYSCALL_CALL (fstatat64, fd, file, st, flag); return INLINE_SYSCALL_CALL (fstatat64, fd, file, st, flag);
} }
strong_alias (__fxstatat64, __fxstatat); strong_alias (__fxstatat64, __fxstatat_compat)
compat_symbol (libc, __fxstatat_compat, __fxstatat, GLIBC_2_4);
compat_symbol (libc, __fxstatat64, __fxstatat64, GLIBC_2_4);
#endif

View File

@ -23,9 +23,11 @@
#include <kernel_stat.h> #include <kernel_stat.h>
#include <sysdep.h> #include <sysdep.h>
#include <xstatconv.h> #include <xstatconv.h>
#include <shlib-compat.h>
/* Get information about the file NAME in BUF. */ /* Get information about the file NAME in BUF. */
int int
attribute_compat_text_section
__lxstat64 (int vers, const char *name, struct stat64 *buf) __lxstat64 (int vers, const char *name, struct stat64 *buf)
{ {
switch (vers) switch (vers)
@ -43,4 +45,12 @@ __lxstat64 (int vers, const char *name, struct stat64 *buf)
} }
} }
} }
weak_alias (__lxstat64, __lxstat);
#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

View File

@ -23,9 +23,11 @@
#include <kernel_stat.h> #include <kernel_stat.h>
#include <sysdep.h> #include <sysdep.h>
#include <xstatconv.h> #include <xstatconv.h>
#include <shlib-compat.h>
/* Get information about the file NAME in BUF. */ /* Get information about the file NAME in BUF. */
int int
attribute_compat_text_section
__xstat64 (int vers, const char *name, struct stat64 *buf) __xstat64 (int vers, const char *name, struct stat64 *buf)
{ {
switch (vers) switch (vers)
@ -43,4 +45,12 @@ __xstat64 (int vers, const char *name, struct stat64 *buf)
} }
} }
} }
weak_alias (__xstat64, __xstat);
#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

View File

@ -24,9 +24,13 @@
#if !XSTAT_IS_XSTAT64 #if !XSTAT_IS_XSTAT64
# include <xstatconv.h> # include <xstatconv.h>
# include <xstatover.h> # include <xstatover.h>
# include <shlib-compat.h>
# if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
/* Get information about the file FD in BUF. */ /* Get information about the file FD in BUF. */
int int
attribute_compat_text_section
__fxstat (int vers, int fd, struct stat *buf) __fxstat (int vers, int fd, struct stat *buf)
{ {
switch (vers) switch (vers)
@ -57,4 +61,8 @@ __fxstat (int vers, int fd, struct stat *buf)
} }
} }
} }
compat_symbol (libc, __fxstat, __fxstat, GLIBC_2_0);
# endif /* SHLIB_COMPAT */
#endif /* XSTAT_IS_XSTAT64 */ #endif /* XSTAT_IS_XSTAT64 */

View File

@ -24,10 +24,14 @@
#include <sysdep.h> #include <sysdep.h>
#include <xstatconv.h> #include <xstatconv.h>
#include <statx_cp.h> #include <statx_cp.h>
#include <shlib-compat.h>
#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
/* Get information about the file FD in BUF. */ /* Get information about the file FD in BUF. */
int int
attribute_compat_text_section
___fxstat64 (int vers, int fd, struct stat64 *buf) ___fxstat64 (int vers, int fd, struct stat64 *buf)
{ {
#if XSTAT_IS_XSTAT64 #if XSTAT_IS_XSTAT64
@ -63,16 +67,18 @@ ___fxstat64 (int vers, int fd, struct stat64 *buf)
#endif /* XSTAT_IS_XSTAT64 */ #endif /* XSTAT_IS_XSTAT64 */
} }
#include <shlib-compat.h>
#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) #if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
versioned_symbol (libc, ___fxstat64, __fxstat64, GLIBC_2_2); compat_symbol (libc, ___fxstat64, __fxstat64, GLIBC_2_2);
strong_alias (___fxstat64, __old__fxstat64) strong_alias (___fxstat64, __old__fxstat64)
compat_symbol (libc, __old__fxstat64, __fxstat64, GLIBC_2_1); compat_symbol (libc, __old__fxstat64, __fxstat64, GLIBC_2_1);
#else #else
strong_alias (___fxstat64, __fxstat64) strong_alias (___fxstat64, __fxstat64)
compat_symbol (libc, ___fxstat64, __fxstat64, GLIBC_2_2);
#endif #endif
#if XSTAT_IS_XSTAT64 #if XSTAT_IS_XSTAT64
strong_alias (__fxstat64, __fxstat); strong_alias (___fxstat64, __fxstat_compat)
compat_symbol (libc, __fxstat_compat, __fxstat, GLIBC_2_2);
#endif #endif
#endif /* SHLIB_COMPAT */

View File

@ -24,9 +24,13 @@
#if !XSTAT_IS_XSTAT64 #if !XSTAT_IS_XSTAT64
# include <xstatconv.h> # include <xstatconv.h>
# include <xstatover.h> # include <xstatover.h>
# include <shlib-compat.h>
# if SHLIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33)
/* Get information about the file FD in BUF. */ /* Get information about the file FD in BUF. */
int int
attribute_compat_text_section
__fxstatat (int vers, int fd, const char *file, struct stat *st, int flag) __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
{ {
#if STAT_IS_KERNEL_STAT #if STAT_IS_KERNEL_STAT
@ -46,4 +50,8 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
return r ?: __xstat32_conv (vers, &st64, st); return r ?: __xstat32_conv (vers, &st64, st);
#endif #endif
} }
compat_symbol (libc, __fxstatat, __fxstatat, GLIBC_2_4);
# endif /* SHLIB_COMPAT */
#endif /* XSTAT_IS_XSTAT64 */ #endif /* XSTAT_IS_XSTAT64 */

View File

@ -24,10 +24,14 @@
#include <sysdep.h> #include <sysdep.h>
#include <xstatconv.h> #include <xstatconv.h>
#include <statx_cp.h> #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. */ /* Get information about the file FD in BUF. */
int int
attribute_compat_text_section
__fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag) __fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag)
{ {
#if XSTAT_IS_XSTAT64 #if XSTAT_IS_XSTAT64
@ -61,6 +65,12 @@ __fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag)
#endif #endif
return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL); return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL);
} }
compat_symbol (libc, __fxstatat64, __fxstatat64, GLIBC_2_4);
#if XSTAT_IS_XSTAT64 #if XSTAT_IS_XSTAT64
strong_alias (__fxstatat64, __fxstatat); strong_alias (__fxstatat64, __fxstatat_compat)
compat_symbol (libc, __fxstatat_compat, __fxstatat, GLIBC_2_4);
#endif #endif
#endif /* SHLIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33) */

View File

@ -20,13 +20,17 @@
#include <fcntl.h> #include <fcntl.h>
#include <kernel_stat.h> #include <kernel_stat.h>
#include <sysdep.h> #include <sysdep.h>
#include <shlib-compat.h>
#if !XSTAT_IS_XSTAT64 #if !XSTAT_IS_XSTAT64
# include <xstatconv.h> # include <xstatconv.h>
# include <xstatover.h> # include <xstatover.h>
# if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
/* Get information about the file NAME in BUF. */ /* Get information about the file NAME in BUF. */
int int
attribute_compat_text_section
__lxstat (int vers, const char *name, struct stat *buf) __lxstat (int vers, const char *name, struct stat *buf)
{ {
switch (vers) switch (vers)
@ -58,4 +62,8 @@ __lxstat (int vers, const char *name, struct stat *buf)
} }
} }
} }
compat_symbol (libc, __lxstat, __lxstat, GLIBC_2_0);
# endif /* SHLIB_COMPAT */
#endif /* XSTAT_IS_XSTAT64 */ #endif /* XSTAT_IS_XSTAT64 */

View File

@ -24,10 +24,14 @@
#include <sysdep.h> #include <sysdep.h>
#include <xstatconv.h> #include <xstatconv.h>
#include <statx_cp.h> #include <statx_cp.h>
#include <shlib-compat.h>
#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_33)
/* Get information about the file NAME in BUF. */ /* Get information about the file NAME in BUF. */
int int
attribute_compat_text_section
___lxstat64 (int vers, const char *name, struct stat64 *buf) ___lxstat64 (int vers, const char *name, struct stat64 *buf)
{ {
#if XSTAT_IS_XSTAT64 #if XSTAT_IS_XSTAT64
@ -80,17 +84,18 @@ ___lxstat64 (int vers, const char *name, struct stat64 *buf)
return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL); return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL);
} }
#if XSTAT_IS_XSTAT64
weak_alias (___lxstat64, __lxstat);
weak_alias (___lxstat64, __GI___lxstat);
#endif
#include <shlib-compat.h>
#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) #if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
versioned_symbol (libc, ___lxstat64, __lxstat64, GLIBC_2_2); compat_symbol (libc, ___lxstat64, __lxstat64, GLIBC_2_2);
strong_alias (___lxstat64, __old__lxstat64) strong_alias (___lxstat64, __old__lxstat64)
compat_symbol (libc, __old__lxstat64, __lxstat64, GLIBC_2_1); compat_symbol (libc, __old__lxstat64, __lxstat64, GLIBC_2_1);
#else #else
strong_alias (___lxstat64, __lxstat64); strong_alias (___lxstat64, __lxstat64);
compat_symbol (libc, ___lxstat64, __lxstat64, GLIBC_2_2);
#endif #endif
#if XSTAT_IS_XSTAT64
strong_alias (___lxstat64,__lxstat_compat)
compat_symbol (libc, __lxstat_compat, __lxstat, GLIBC_2_2);
#endif
#endif /* SHLIB_COMPAT */

View File

@ -21,9 +21,13 @@
#include <kernel_stat.h> #include <kernel_stat.h>
#include <sysdep.h> #include <sysdep.h>
#include <xstatconv.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. */ /* Get information about the file NAME in BUF. */
int int
attribute_compat_text_section
__fxstat (int vers, int fd, struct stat *buf) __fxstat (int vers, int fd, struct stat *buf)
{ {
switch (vers) switch (vers)
@ -39,3 +43,7 @@ __fxstat (int vers, int fd, struct stat *buf)
} }
} }
} }
compat_symbol (libc, __fxstat, __fxstat, GLIBC_2_0);
#endif

View File

@ -21,9 +21,13 @@
#include <kernel_stat.h> #include <kernel_stat.h>
#include <sysdep.h> #include <sysdep.h>
#include <xstatconv.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. */ /* Get information about the file NAME in BUF. */
int int
attribute_compat_text_section
__lxstat (int vers, const char *name, struct stat *buf) __lxstat (int vers, const char *name, struct stat *buf)
{ {
switch (vers) switch (vers)
@ -39,3 +43,7 @@ __lxstat (int vers, const char *name, struct stat *buf)
} }
} }
} }
compat_symbol (libc, __lxstat, __lxstat, GLIBC_2_0);
#endif

View File

@ -20,10 +20,14 @@
#include <kernel_stat.h> #include <kernel_stat.h>
#include <sysdep.h> #include <sysdep.h>
#include <xstatconv.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. */ /* Get information about the file FD in BUF. */
int int
attribute_compat_text_section
__fxstat64 (int vers, int fd, struct stat64 *buf) __fxstat64 (int vers, int fd, struct stat64 *buf)
{ {
struct kernel_stat kbuf; struct kernel_stat kbuf;
@ -31,3 +35,7 @@ __fxstat64 (int vers, int fd, struct stat64 *buf)
return r ?: __xstat64_conv (vers, &kbuf, buf); return r ?: __xstat64_conv (vers, &kbuf, buf);
} }
compat_symbol (libc, __fxstat64, __fxstat64, GLIBC_2_2);
#endif

View File

@ -21,12 +21,20 @@
#include <kernel_stat.h> #include <kernel_stat.h>
#include <sysdep.h> #include <sysdep.h>
#include <xstatconv.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. */ /* Get information about the file FD in BUF. */
int int
attribute_compat_text_section
__fxstatat (int vers, int fd, const char *file, struct stat *st, int flag) __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
{ {
struct kernel_stat kst; struct kernel_stat kst;
int r = INLINE_SYSCALL_CALL (newfstatat, fd, file, &kst, flag); int r = INLINE_SYSCALL_CALL (newfstatat, fd, file, &kst, flag);
return r ?: __xstat_conv (vers, &kst, st); return r ?: __xstat_conv (vers, &kst, st);
} }
compat_symbol (libc, __fxstatat, __fxstatat, GLIBC_2_4);
#endif

View File

@ -19,10 +19,14 @@
#include <kernel_stat.h> #include <kernel_stat.h>
#include <sysdep.h> #include <sysdep.h>
#include <xstatconv.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. */ /* Get information about the file NAME in BUF. */
int int
attribute_compat_text_section
__fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag) __fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag)
{ {
if (vers == _STAT_VER_LINUX) if (vers == _STAT_VER_LINUX)
@ -33,3 +37,7 @@ __fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag)
} }
return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL); return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL);
} }
compat_symbol (libc, __fxstatat64, __fxstatat64, GLIBC_2_4);
#endif

View File

@ -20,12 +20,20 @@
#include <kernel_stat.h> #include <kernel_stat.h>
#include <sysdep.h> #include <sysdep.h>
#include <xstatconv.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. */ /* Get information about the file NAME in BUF. */
int int
attribute_compat_text_section
__lxstat64 (int vers, const char *name, struct stat64 *buf) __lxstat64 (int vers, const char *name, struct stat64 *buf)
{ {
struct kernel_stat kbuf; struct kernel_stat kbuf;
int r = INLINE_SYSCALL_CALL (lstat, name, &kbuf); int r = INLINE_SYSCALL_CALL (lstat, name, &kbuf);
return r ?: __xstat64_conv (vers, &kbuf, buf); return r ?: __xstat64_conv (vers, &kbuf, buf);
} }
compat_symbol (libc, __lxstat64, __lxstat64, GLIBC_2_2);
#endif

View File

@ -20,13 +20,20 @@
#include <kernel_stat.h> #include <kernel_stat.h>
#include <sysdep.h> #include <sysdep.h>
#include <xstatconv.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. */ /* Get information about the file NAME in BUF. */
int int
attribute_compat_text_section
__xstat64 (int vers, const char *name, struct stat64 *buf) __xstat64 (int vers, const char *name, struct stat64 *buf)
{ {
struct kernel_stat kbuf; struct kernel_stat kbuf;
int r = INLINE_SYSCALL_CALL (stat, name, &kbuf); int r = INLINE_SYSCALL_CALL (stat, name, &kbuf);
return r ?: __xstat64_conv (vers, &kbuf, buf); return r ?: __xstat64_conv (vers, &kbuf, buf);
} }
compat_symbol (libc, __xstat64, __xstat64, GLIBC_2_2);
#endif

View File

@ -21,9 +21,13 @@
#include <kernel_stat.h> #include <kernel_stat.h>
#include <sysdep.h> #include <sysdep.h>
#include <xstatconv.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. */ /* Get information about the file NAME in BUF. */
int int
attribute_compat_text_section
__xstat (int vers, const char *name, struct stat *buf) __xstat (int vers, const char *name, struct stat *buf)
{ {
switch (vers) switch (vers)
@ -39,3 +43,7 @@ __xstat (int vers, const char *name, struct stat *buf)
} }
} }
} }
compat_symbol (libc, __xstat, __xstat, GLIBC_2_0);
#endif

View File

@ -201,10 +201,6 @@ GLIBC_2.33 __fsetlocking F
GLIBC_2.33 __fwprintf_chk F GLIBC_2.33 __fwprintf_chk F
GLIBC_2.33 __fwritable F GLIBC_2.33 __fwritable F
GLIBC_2.33 __fwriting F GLIBC_2.33 __fwriting F
GLIBC_2.33 __fxstat F
GLIBC_2.33 __fxstat64 F
GLIBC_2.33 __fxstatat F
GLIBC_2.33 __fxstatat64 F
GLIBC_2.33 __getauxval F GLIBC_2.33 __getauxval F
GLIBC_2.33 __getcwd_chk F GLIBC_2.33 __getcwd_chk F
GLIBC_2.33 __getdelim F GLIBC_2.33 __getdelim F
@ -287,8 +283,6 @@ GLIBC_2.33 __libc_start_main F
GLIBC_2.33 __libc_valloc F GLIBC_2.33 __libc_valloc F
GLIBC_2.33 __longjmp_chk F GLIBC_2.33 __longjmp_chk F
GLIBC_2.33 __lseek F GLIBC_2.33 __lseek F
GLIBC_2.33 __lxstat F
GLIBC_2.33 __lxstat64 F
GLIBC_2.33 __malloc_hook D 0x4 GLIBC_2.33 __malloc_hook D 0x4
GLIBC_2.33 __mbrlen F GLIBC_2.33 __mbrlen F
GLIBC_2.33 __mbrtowc F GLIBC_2.33 __mbrtowc F
@ -489,8 +483,6 @@ GLIBC_2.33 __xmknodat F
GLIBC_2.33 __xpg_basename F GLIBC_2.33 __xpg_basename F
GLIBC_2.33 __xpg_sigpause F GLIBC_2.33 __xpg_sigpause F
GLIBC_2.33 __xpg_strerror_r F GLIBC_2.33 __xpg_strerror_r F
GLIBC_2.33 __xstat F
GLIBC_2.33 __xstat64 F
GLIBC_2.33 _dl_mcount_wrapper F GLIBC_2.33 _dl_mcount_wrapper F
GLIBC_2.33 _dl_mcount_wrapper_check F GLIBC_2.33 _dl_mcount_wrapper_check F
GLIBC_2.33 _environ D 0x4 GLIBC_2.33 _environ D 0x4

View File

@ -20,13 +20,17 @@
#include <fcntl.h> #include <fcntl.h>
#include <kernel_stat.h> #include <kernel_stat.h>
#include <sysdep.h> #include <sysdep.h>
#include <shlib-compat.h>
#if !XSTAT_IS_XSTAT64 #if !XSTAT_IS_XSTAT64
# include <xstatconv.h> # include <xstatconv.h>
# include <xstatover.h> # include <xstatover.h>
# if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
/* Get information about the file NAME in BUF. */ /* Get information about the file NAME in BUF. */
int int
attribute_compat_text_section
__xstat (int vers, const char *name, struct stat *buf) __xstat (int vers, const char *name, struct stat *buf)
{ {
switch (vers) switch (vers)
@ -57,4 +61,8 @@ __xstat (int vers, const char *name, struct stat *buf)
} }
} }
} }
compat_symbol (libc, __xstat, __xstat, GLIBC_2_0);
# endif /* SHLIB_COMPAT */
#endif /* XSTAT_IS_XSTAT64 */ #endif /* XSTAT_IS_XSTAT64 */

View File

@ -24,10 +24,14 @@
#include <sysdep.h> #include <sysdep.h>
#include <xstatconv.h> #include <xstatconv.h>
#include <statx_cp.h> #include <statx_cp.h>
#include <shlib-compat.h>
#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33)
/* Get information about the file NAME in BUF. */ /* Get information about the file NAME in BUF. */
int int
attribute_compat_text_section
___xstat64 (int vers, const char *name, struct stat64 *buf) ___xstat64 (int vers, const char *name, struct stat64 *buf)
{ {
#if XSTAT_IS_XSTAT64 #if XSTAT_IS_XSTAT64
@ -78,16 +82,17 @@ ___xstat64 (int vers, const char *name, struct stat64 *buf)
} }
#if XSTAT_IS_XSTAT64 #if XSTAT_IS_XSTAT64
weak_alias (___xstat64, __xstat); strong_alias (___xstat64, __xstat_compat)
weak_alias (___xstat64, __GI___xstat); compat_symbol (libc, __xstat_compat, __xstat, GLIBC_2_2);
#endif #endif
#include <shlib-compat.h>
#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2) #if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
versioned_symbol (libc, ___xstat64, __xstat64, GLIBC_2_2); compat_symbol (libc, ___xstat64, __xstat64, GLIBC_2_2);
strong_alias (___xstat64, __old__xstat64) strong_alias (___xstat64, __old__xstat64)
compat_symbol (libc, __old__xstat64, __xstat64, GLIBC_2_1); compat_symbol (libc, __old__xstat64, __xstat64, GLIBC_2_1);
#else #else
strong_alias (___xstat64, __xstat64) strong_alias (___xstat64, __xstat64)
compat_symbol (libc, ___xstat64, __xstat64, GLIBC_2_2);
#endif #endif
#endif /* SHLIB_COMPAT */