From 839bae66a376631ee7d5b1f5b2f5b4094c519ea8 Mon Sep 17 00:00:00 2001 From: Dmitry Chestnykh Date: Sat, 20 Jul 2024 17:23:45 +0300 Subject: Fix compilation with 4.x kernel headers - Fallback to __NR_stat syscall in ld.so if we use 4.x kernel headers. 4.x kernel doesn't support 64-bit time so we can use old syscall - Add preprocessor conditions to have fstat64 and fstatat64 in libc with old kernel headers Signed-off-by: Dmitry Chestnykh --- ldso/include/dl-syscall.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'ldso') diff --git a/ldso/include/dl-syscall.h b/ldso/include/dl-syscall.h index 4f41034ad..9ec0eac60 100644 --- a/ldso/include/dl-syscall.h +++ b/ldso/include/dl-syscall.h @@ -17,6 +17,8 @@ extern int _dl_errno; #define __set_errno(X) {(_dl_errno) = (X);} #endif +#include + /* Pull in the arch specific syscall implementation */ #include /* For MAP_ANONYMOUS -- differs between platforms */ @@ -139,7 +141,7 @@ static __always_inline int _dl_stat(const char *file_name, { return _dl_newfstatat(AT_FDCWD, file_name, buf, 0); } -#elif defined __NR_stat && (!defined(__UCLIBC_USE_TIME64__) || defined(__sparc__)) +#elif defined __NR_stat && (!defined(__UCLIBC_USE_TIME64__) || defined(__sparc__)) || (LINUX_VERSION_CODE <= KERNEL_VERSION(5,1,0)) # define __NR__dl_stat __NR_stat static __always_inline _syscall2(int, _dl_stat, const char *, file_name, struct stat *, buf) -- cgit v1.2.3