From 50018f92f7a1d79bc41a1ad5c5baf99eb7cd40af Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 1 Aug 2019 00:56:48 -0400 Subject: [PATCH] disable lfs64 aliases for remapped time64 functions these functions cannot provide the glibc lfs64-ABI-compatible symbols when time_t differs from what it was in that ABI. instead, the aliases need to be provided by the time32 compat shims or through some other mechanism. --- src/aio/aio_suspend.c | 2 ++ src/stat/__xstat.c | 4 ++++ src/stat/fstat.c | 2 ++ src/stat/fstatat.c | 2 ++ src/stat/lstat.c | 2 ++ src/stat/stat.c | 2 ++ 6 files changed, 14 insertions(+) diff --git a/src/aio/aio_suspend.c b/src/aio/aio_suspend.c index 9b24b6af..34b66f87 100644 --- a/src/aio/aio_suspend.c +++ b/src/aio/aio_suspend.c @@ -73,4 +73,6 @@ int aio_suspend(const struct aiocb *const cbs[], int cnt, const struct timespec } } +#if !_REDIR_TIME64 weak_alias(aio_suspend, aio_suspend64); +#endif diff --git a/src/stat/__xstat.c b/src/stat/__xstat.c index f6303430..630936a0 100644 --- a/src/stat/__xstat.c +++ b/src/stat/__xstat.c @@ -1,5 +1,7 @@ #include +#if !_REDIR_TIME64 + int __fxstat(int ver, int fd, struct stat *buf) { return fstat(fd, buf); @@ -25,6 +27,8 @@ weak_alias(__fxstatat, __fxstatat64); weak_alias(__lxstat, __lxstat64); weak_alias(__xstat, __xstat64); +#endif + int __xmknod(int ver, const char *path, mode_t mode, dev_t *dev) { return mknod(path, mode, *dev); diff --git a/src/stat/fstat.c b/src/stat/fstat.c index 07f9a5de..9bbb46de 100644 --- a/src/stat/fstat.c +++ b/src/stat/fstat.c @@ -10,4 +10,6 @@ int fstat(int fd, struct stat *st) return fstatat(fd, "", st, AT_EMPTY_PATH); } +#if !_REDIR_TIME64 weak_alias(fstat, fstat64); +#endif diff --git a/src/stat/fstatat.c b/src/stat/fstatat.c index d915fa10..bf0a554c 100644 --- a/src/stat/fstatat.c +++ b/src/stat/fstatat.c @@ -126,4 +126,6 @@ int fstatat(int fd, const char *restrict path, struct stat *restrict st, int fla return __syscall_ret(ret); } +#if !_REDIR_TIME64 weak_alias(fstatat, fstatat64); +#endif diff --git a/src/stat/lstat.c b/src/stat/lstat.c index 9f95218a..6fe004de 100644 --- a/src/stat/lstat.c +++ b/src/stat/lstat.c @@ -6,4 +6,6 @@ int lstat(const char *restrict path, struct stat *restrict buf) return fstatat(AT_FDCWD, path, buf, AT_SYMLINK_NOFOLLOW); } +#if !_REDIR_TIME64 weak_alias(lstat, lstat64); +#endif diff --git a/src/stat/stat.c b/src/stat/stat.c index 528870d2..ea70efc4 100644 --- a/src/stat/stat.c +++ b/src/stat/stat.c @@ -6,4 +6,6 @@ int stat(const char *restrict path, struct stat *restrict buf) return fstatat(AT_FDCWD, path, buf, 0); } +#if !_REDIR_TIME64 weak_alias(stat, stat64); +#endif -- 2.25.1