diff --git a/0001-runtime-POSIX-fix-failures-with-glibc-2.33.patch b/0001-runtime-POSIX-fix-failures-with-glibc-2.33.patch index 35c3c97..20abfe4 100644 --- a/0001-runtime-POSIX-fix-failures-with-glibc-2.33.patch +++ b/0001-runtime-POSIX-fix-failures-with-glibc-2.33.patch @@ -12,48 +12,38 @@ But we relied on the renames to build `fd_64.c` properly. With glibc 2.33, we now see link failures of the POSIX runtime: error: Linking globals named '__xstat': symbol multiply defined! -Rename the function directly in the code as `__USE_FILE_OFFSET64` case -(which we defined at the top of the file) did exactly that using -`__REDIRECT_NTH`. +Rename the functions using `__REDIRECT_NTH` in the code as +`__USE_FILE_OFFSET64` case (which we define at the top of the file by +`#define _FILE_OFFSET_BITS 64`) did exactly that. Fixes #1384. Signed-off-by: Jiri Slaby --- - runtime/POSIX/fd_64.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + runtime/POSIX/fd_64.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) diff --git a/runtime/POSIX/fd_64.c b/runtime/POSIX/fd_64.c -index eec41f113024..29a9c848712b 100644 +index eec41f113024..c8796475aca8 100644 --- a/runtime/POSIX/fd_64.c +++ b/runtime/POSIX/fd_64.c -@@ -77,7 +77,7 @@ off64_t lseek(int fd, off64_t offset, int whence) { +@@ -73,6 +73,16 @@ int openat(int fd, const char *pathname, int flags, ...) { + return __fd_openat(fd, pathname, flags, mode); + } + ++/* removed in glibc 2.33 */ ++#ifdef __REDIRECT_NTH ++extern int __REDIRECT_NTH(__fxstat, (int __ver, int __fildes, ++ struct stat *__stat_buf), __fxstat64); ++extern int __REDIRECT_NTH (__xstat, (int __ver, const char *__filename, ++ struct stat *__stat_buf), __xstat64); ++extern int __REDIRECT_NTH (__lxstat, (int __ver, const char *__filename, ++ struct stat *__stat_buf), __lxstat64); ++#endif ++ + off64_t lseek(int fd, off64_t offset, int whence) { return __fd_lseek(fd, offset, whence); } - --int __xstat(int vers, const char *path, struct stat *buf) { -+int __xstat64(int vers, const char *path, struct stat *buf) { - return __fd_stat(path, (struct stat64*) buf); - } - -@@ -85,7 +85,7 @@ int stat(const char *path, struct stat *buf) { - return __fd_stat(path, (struct stat64*) buf); - } - --int __lxstat(int vers, const char *path, struct stat *buf) { -+int __lxstat64(int vers, const char *path, struct stat *buf) { - return __fd_lstat(path, (struct stat64*) buf); - } - -@@ -93,7 +93,7 @@ int lstat(const char *path, struct stat *buf) { - return __fd_lstat(path, (struct stat64*) buf); - } - --int __fxstat(int vers, int fd, struct stat *buf) { -+int __fxstat64(int vers, int fd, struct stat *buf) { - return __fd_fstat(fd, (struct stat64*) buf); - } - -- 2.30.1