diff --git a/arch/i386/syscall.h b/arch/i386/syscall.h index 901263ba..114aa688 100644 --- a/arch/i386/syscall.h +++ b/arch/i386/syscall.h @@ -480,6 +480,29 @@ static inline long syscall6(long n, long a1, long a2, long a3, long a4, long a5, #define __NR_setfsgid __NR_setfsgid32 +/* fixup legacy 32-bit-vs-lfs64 junk */ +#undef __NR_getdents +#undef __NR_ftruncate +#undef __NR_truncate +#undef __NR_stat +#undef __NR_fstat +#undef __NR_lstat +#undef __NR_statfs +#undef __NR_fstatfs +#define __NR_getdents __NR_getdents64 +#define __NR_ftruncate __NR_ftruncate64 +#define __NR_truncate __NR_truncate64 +#define __NR_stat __NR_stat64 +#define __NR_fstat __NR_fstat64 +#define __NR_lstat __NR_lstat64 +#define __NR_statfs __NR_statfs64 +#define __NR_fstatfs __NR_fstatfs64 +#define __NR_fstatat __NR_fstatat64 +#define __NR_pread __NR_pread64 +#define __NR_pwrite __NR_pwrite64 + + + #undef O_LARGEFILE #define O_LARGEFILE 0100000 diff --git a/src/dirent/__getdents.c b/src/dirent/__getdents.c index 4195430b..dc373440 100644 --- a/src/dirent/__getdents.c +++ b/src/dirent/__getdents.c @@ -4,7 +4,7 @@ int __getdents(int fd, struct dirent *buf, size_t len) { - return syscall3(__NR_getdents64, fd, (long)buf, len); + return syscall3(__NR_getdents, fd, (long)buf, len); } weak_alias(__getdents, getdents); diff --git a/src/stat/fstat.c b/src/stat/fstat.c index 5f643301..88ac6f3c 100644 --- a/src/stat/fstat.c +++ b/src/stat/fstat.c @@ -4,7 +4,7 @@ int fstat(int fd, struct stat *buf) { - return syscall2(__NR_fstat64, fd, (long)buf); + return syscall2(__NR_fstat, fd, (long)buf); } LFS64(fstat); diff --git a/src/stat/fstatat.c b/src/stat/fstatat.c index 22bc2934..e39f833b 100644 --- a/src/stat/fstatat.c +++ b/src/stat/fstatat.c @@ -4,7 +4,7 @@ int fstatat(int fd, const char *path, struct stat *buf, int flag) { - return syscall4(__NR_fstatat64, fd, (long)path, (long)buf, flag); + return syscall4(__NR_fstatat, fd, (long)path, (long)buf, flag); } LFS64(fstatat); diff --git a/src/stat/fstatvfs.c b/src/stat/fstatvfs.c index 83bd7486..4a8bfe2e 100644 --- a/src/stat/fstatvfs.c +++ b/src/stat/fstatvfs.c @@ -4,7 +4,7 @@ int fstatvfs(int fd, struct statvfs *buf) { - return syscall2(__NR_fstatfs64, fd, (long)buf); + return syscall2(__NR_fstatfs, fd, (long)buf); } weak_alias(fstatvfs, fstatfs); diff --git a/src/stat/lstat.c b/src/stat/lstat.c index afdb5538..3b22e620 100644 --- a/src/stat/lstat.c +++ b/src/stat/lstat.c @@ -4,7 +4,7 @@ int lstat(const char *path, struct stat *buf) { - return syscall2(__NR_lstat64, (long)path, (long)buf); + return syscall2(__NR_lstat, (long)path, (long)buf); } LFS64(lstat); diff --git a/src/stat/stat.c b/src/stat/stat.c index 67640cc1..9847552a 100644 --- a/src/stat/stat.c +++ b/src/stat/stat.c @@ -4,7 +4,7 @@ int stat(const char *path, struct stat *buf) { - return syscall2(__NR_stat64, (long)path, (long)buf); + return syscall2(__NR_stat, (long)path, (long)buf); } LFS64(stat); diff --git a/src/stat/statvfs.c b/src/stat/statvfs.c index 55a05d52..ebf14b43 100644 --- a/src/stat/statvfs.c +++ b/src/stat/statvfs.c @@ -4,7 +4,7 @@ int statvfs(const char *path, struct statvfs *buf) { - return syscall2(__NR_statfs64, (long)path, (long)buf); + return syscall2(__NR_statfs, (long)path, (long)buf); } weak_alias(statvfs, statfs); diff --git a/src/unistd/ftruncate.c b/src/unistd/ftruncate.c index e0b2f4bb..db5da844 100644 --- a/src/unistd/ftruncate.c +++ b/src/unistd/ftruncate.c @@ -4,12 +4,7 @@ int ftruncate(int fd, off_t length) { - if (sizeof(long) == 8) - return syscall2(__NR_ftruncate, fd, length); - else { - union { long long ll; long l[2]; } u = { length }; - return syscall3(__NR_ftruncate64, fd, u.l[0], u.l[1]); - } + return syscall3(__NR_ftruncate, fd, SYSCALL_LL(length)); } LFS64(ftruncate); diff --git a/src/unistd/pread.c b/src/unistd/pread.c index 029ba3d1..534215ac 100644 --- a/src/unistd/pread.c +++ b/src/unistd/pread.c @@ -6,7 +6,7 @@ ssize_t pread(int fd, void *buf, size_t size, off_t ofs) { ssize_t r; CANCELPT_BEGIN; - r = syscall5(__NR_pread64, fd, (long)buf, size, SYSCALL_LL(ofs)); + r = syscall5(__NR_pread, fd, (long)buf, size, SYSCALL_LL(ofs)); CANCELPT_END; return r; } diff --git a/src/unistd/pwrite.c b/src/unistd/pwrite.c index 8f23d1b9..56ed6b4c 100644 --- a/src/unistd/pwrite.c +++ b/src/unistd/pwrite.c @@ -6,7 +6,7 @@ ssize_t pwrite(int fd, const void *buf, size_t size, off_t ofs) { ssize_t r; CANCELPT_BEGIN; - r = syscall5(__NR_pwrite64, fd, (long)buf, size, SYSCALL_LL(ofs)); + r = syscall5(__NR_pwrite, fd, (long)buf, size, SYSCALL_LL(ofs)); CANCELPT_END; return r; } diff --git a/src/unistd/truncate.c b/src/unistd/truncate.c index f75e824e..322349d2 100644 --- a/src/unistd/truncate.c +++ b/src/unistd/truncate.c @@ -4,12 +4,7 @@ int truncate(const char *path, off_t length) { - if (sizeof(long) == 8) - return syscall2(__NR_truncate, (long)path, length); - else { - union { long long ll; long l[2]; } u = { length }; - return syscall3(__NR_truncate64, (long)path, u.l[0], u.l[1]); - } + return syscall3(__NR_truncate, (long)path, SYSCALL_LL(length)); } LFS64(truncate);