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

This reverts commit 20b39d5946 to move
{f}xstat{at} back to default symbols.  ABIs with default symbol version
of 2.33 or newer (such as riscv32) continue to just provide the stat
symbols.

The idea is to not force static libraries built against old glibc
to update against new glibcs (since they reference the old
{f}xstat{at} symbols).

Checked on x86_64-linux-gnu and i686-linux-gnu.
This commit is contained in:
Adhemerval Zanella 2020-12-02 13:51:57 -03:00
parent be5365e87b
commit 22edf4d4b2
20 changed files with 11 additions and 133 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -30,7 +30,6 @@
/* Get information about the file FD in BUF. */
int
attribute_compat_text_section
__fxstat (int vers, int fd, struct stat *buf)
{
switch (vers)
@ -62,7 +61,6 @@ __fxstat (int vers, int fd, struct stat *buf)
}
}
compat_symbol (libc, __fxstat, __fxstat, GLIBC_2_0);
# endif /* SHLIB_COMPAT */
#endif /* XSTAT_IS_XSTAT64 */

View File

@ -31,7 +31,6 @@
/* 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
@ -68,17 +67,15 @@ ___fxstat64 (int vers, int fd, struct stat64 *buf)
}
#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
compat_symbol (libc, ___fxstat64, __fxstat64, 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
strong_alias (___fxstat64, __fxstat64)
compat_symbol (libc, ___fxstat64, __fxstat64, GLIBC_2_2);
#endif
#if XSTAT_IS_XSTAT64
strong_alias (___fxstat64, __fxstat_compat)
compat_symbol (libc, __fxstat_compat, __fxstat, GLIBC_2_2);
strong_alias (___fxstat64, __fxstat)
#endif
#endif /* SHLIB_COMPAT */

View File

@ -30,7 +30,6 @@
/* 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
@ -51,7 +50,6 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
#endif
}
compat_symbol (libc, __fxstatat, __fxstatat, GLIBC_2_4);
# endif /* SHLIB_COMPAT */
#endif /* XSTAT_IS_XSTAT64 */

View File

@ -31,7 +31,6 @@
/* Get information about the file FD in BUF. */
int
attribute_compat_text_section
__fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag)
{
#if XSTAT_IS_XSTAT64
@ -66,11 +65,8 @@ __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);
#if XSTAT_IS_XSTAT64
strong_alias (__fxstatat64, __fxstatat_compat)
compat_symbol (libc, __fxstatat_compat, __fxstatat, GLIBC_2_4);
strong_alias (__fxstatat64, __fxstatat)
#endif
#endif /* SHLIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33) */

View File

@ -30,7 +30,6 @@
/* Get information about the file NAME in BUF. */
int
attribute_compat_text_section
__lxstat (int vers, const char *name, struct stat *buf)
{
switch (vers)
@ -63,7 +62,6 @@ __lxstat (int vers, const char *name, struct stat *buf)
}
}
compat_symbol (libc, __lxstat, __lxstat, GLIBC_2_0);
# endif /* SHLIB_COMPAT */
#endif /* XSTAT_IS_XSTAT64 */

View File

@ -31,7 +31,6 @@
/* 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
@ -85,17 +84,15 @@ ___lxstat64 (int vers, const char *name, struct stat64 *buf)
}
#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
compat_symbol (libc, ___lxstat64, __lxstat64, 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
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);
strong_alias (___lxstat64,__lxstat)
#endif
#endif /* SHLIB_COMPAT */

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -30,7 +30,6 @@
/* Get information about the file NAME in BUF. */
int
attribute_compat_text_section
__xstat (int vers, const char *name, struct stat *buf)
{
switch (vers)
@ -62,7 +61,6 @@ __xstat (int vers, const char *name, struct stat *buf)
}
}
compat_symbol (libc, __xstat, __xstat, GLIBC_2_0);
# endif /* SHLIB_COMPAT */
#endif /* XSTAT_IS_XSTAT64 */

View File

@ -31,7 +31,6 @@
/* 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
@ -82,17 +81,15 @@ ___xstat64 (int vers, const char *name, struct stat64 *buf)
}
#if XSTAT_IS_XSTAT64
strong_alias (___xstat64, __xstat_compat)
compat_symbol (libc, __xstat_compat, __xstat, GLIBC_2_2);
strong_alias (___xstat64, __xstat)
#endif
#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_2)
compat_symbol (libc, ___xstat64, __xstat64, 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
strong_alias (___xstat64, __xstat64)
compat_symbol (libc, ___xstat64, __xstat64, GLIBC_2_2);
#endif
#endif /* SHLIB_COMPAT */