diff options
author | Jiri Slaby <jirislaby@gmail.com> | 2021-02-19 08:02:45 +0100 |
---|---|---|
committer | Cristian Cadar <c.cadar@imperial.ac.uk> | 2021-02-22 16:16:12 +0000 |
commit | 148a68df793fca84a36fefd8824ea54fdf6583f4 (patch) | |
tree | 1108d4adaa999a5a5b10d4ff2cb9e0514577e168 /runtime/POSIX | |
parent | 5f8d562181bce7c0d11eae0a597e3f534966e42c (diff) | |
download | klee-148a68df793fca84a36fefd8824ea54fdf6583f4.tar.gz |
runtime/POSIX: fix failures with glibc-2.33
commit 8ed005daf0ab of glibc-2.33 (Remove stat wrapper functions, move them to exported symbols) removed renames of `__fxstat`, `__xstat`, and `__lxstat` to `__fxstat64`, `__xstat64`, and `__lxstat64`, respectively. 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 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.
Diffstat (limited to 'runtime/POSIX')
-rw-r--r-- | runtime/POSIX/fd_64.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/runtime/POSIX/fd_64.c b/runtime/POSIX/fd_64.c index eec41f11..aea9ebac 100644 --- a/runtime/POSIX/fd_64.c +++ b/runtime/POSIX/fd_64.c @@ -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); } |