diff --git a/package/uclibc/0004-Fix-arc-build-with-4.x-kernel-headers.patch b/package/uclibc/0004-Fix-arc-build-with-4.x-kernel-headers.patch new file mode 100644 index 0000000000..02a04a42dc --- /dev/null +++ b/package/uclibc/0004-Fix-arc-build-with-4.x-kernel-headers.patch @@ -0,0 +1,35 @@ +From 1afc19eb6a7948afbcf3dd19091ce127a355ebcb Mon Sep 17 00:00:00 2001 +From: Dmitry Chestnykh +Date: Sun, 28 Jul 2024 14:12:39 +0300 +Subject: [PATCH] [ldso] Group conditions after `&&` + +If the conditions are not grouped we can reach +this block even if `__NR_stat` is not defined. + +`defined __NR_stat && ((!defined(__UCLIBC_USE_TIME64__) || defined(__sparc__))` +gives us false but `LINUX_VERSION_CODE <= KERNEL_VERSION(5,1,0))` +may give us true. So if linux headers version is below 5.1.0 and +__NR_stat is not defined we can have compilation error + +Signed-off-by: Dmitry Chestnykh +Upstream: https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/commit/?id=841d0729883ee0de606de161c1d6a5c37cedf575 +--- + ldso/include/dl-syscall.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ldso/include/dl-syscall.h b/ldso/include/dl-syscall.h +index 9ec0eac60..180d03012 100644 +--- a/ldso/include/dl-syscall.h ++++ b/ldso/include/dl-syscall.h +@@ -141,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__)) || (LINUX_VERSION_CODE <= KERNEL_VERSION(5,1,0)) ++#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) +-- +2.45.2 +