Преглед изворни кода

uclibc-ng: add fixes from master branch

Waldemar Brodkorb пре 1 година
родитељ
комит
4151d5ed27

+ 137 - 0
toolchain/uclibc-ng/patches/1.0.50/0001-add-process_vm_-read-write-v-syscall-wrapper-from-gl.patch

@@ -0,0 +1,137 @@
+From 3d975fa52b82e390ecbb0252739ee3fae64266c2 Mon Sep 17 00:00:00 2001
+From: Waldemar Brodkorb <wbx@openadk.org>
+Date: Wed, 14 Aug 2024 17:28:19 +0200
+Subject: [PATCH 1/2] add process_vm_{read,write}v syscall wrapper from glibc
+
+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+---
+ include/sys/uio.h                             | 19 +++++++++++
+ libc/sysdeps/linux/common/Makefile.in         |  2 ++
+ libc/sysdeps/linux/common/process_vm_readv.c  | 32 +++++++++++++++++++
+ libc/sysdeps/linux/common/process_vm_writev.c | 32 +++++++++++++++++++
+ 4 files changed, 85 insertions(+)
+ create mode 100644 libc/sysdeps/linux/common/process_vm_readv.c
+ create mode 100644 libc/sysdeps/linux/common/process_vm_writev.c
+
+diff --git a/include/sys/uio.h b/include/sys/uio.h
+index 330426fec..9e9708c0c 100644
+--- a/include/sys/uio.h
++++ b/include/sys/uio.h
+@@ -74,6 +74,25 @@ extern ssize_t pwritev (int __fd, const struct iovec *__iovec, int __count,
+ 			__off64_t __offset) __wur;
+ #endif	/* Use misc.  */
+ 
++#ifdef __USE_GNU
++/* Read from another process' address space.  */
++extern ssize_t process_vm_readv (pid_t __pid, const struct iovec *__lvec,
++				 unsigned long int __liovcnt,
++				 const struct iovec *__rvec,
++				 unsigned long int __riovcnt,
++				 unsigned long int __flags)
++  __THROW;
++
++/* Write to another process' address space.  */
++extern ssize_t process_vm_writev (pid_t __pid, const struct iovec *__lvec,
++				  unsigned long int __liovcnt,
++				  const struct iovec *__rvec,
++				  unsigned long int __riovcnt,
++				  unsigned long int __flags)
++  __THROW;
++
++#endif
++
+ __END_DECLS
+ 
+ #endif /* sys/uio.h */
+diff --git a/libc/sysdeps/linux/common/Makefile.in b/libc/sysdeps/linux/common/Makefile.in
+index 83be2691e..e0b280c33 100644
+--- a/libc/sysdeps/linux/common/Makefile.in
++++ b/libc/sysdeps/linux/common/Makefile.in
+@@ -40,6 +40,8 @@ CSRC-$(UCLIBC_LINUX_SPECIFIC) += \
+ 	ppoll.c \
+ 	prctl.c \
+ 	prlimit.c \
++	process_vm_readv.c \
++	process_vm_writev.c \
+ 	readahead.c \
+ 	reboot.c \
+ 	remap_file_pages.c \
+diff --git a/libc/sysdeps/linux/common/process_vm_readv.c b/libc/sysdeps/linux/common/process_vm_readv.c
+new file mode 100644
+index 000000000..b69c1c97a
+--- /dev/null
++++ b/libc/sysdeps/linux/common/process_vm_readv.c
+@@ -0,0 +1,32 @@
++/* process_vm_readv - Linux specific syscall.
++   Copyright (C) 2020-2024 Free Software Foundation, Inc.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <https://www.gnu.org/licenses/>.  */
++
++#include <sys/uio.h>
++#include <sys/syscall.h>
++#include <unistd.h>
++
++#ifdef __NR_process_vm_readv
++ssize_t
++process_vm_readv (pid_t pid, const struct iovec *local_iov,
++		  unsigned long int liovcnt,
++		  const struct iovec *remote_iov,
++		  unsigned long int riovcnt, unsigned long int flags)
++{
++  return INLINE_SYSCALL (process_vm_readv, 6, pid, local_iov,
++			      liovcnt, remote_iov, riovcnt, flags);
++}
++#endif
+diff --git a/libc/sysdeps/linux/common/process_vm_writev.c b/libc/sysdeps/linux/common/process_vm_writev.c
+new file mode 100644
+index 000000000..e22817a8d
+--- /dev/null
++++ b/libc/sysdeps/linux/common/process_vm_writev.c
+@@ -0,0 +1,32 @@
++/* process_vm_writev - Linux specific syscall.
++   Copyright (C) 2020-2024 Free Software Foundation, Inc.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <https://www.gnu.org/licenses/>.  */
++
++#include <sys/uio.h>
++#include <sys/syscall.h>
++#include <unistd.h>
++
++#ifdef __NR_process_vm_writev
++ssize_t
++process_vm_writev (pid_t pid, const struct iovec *local_iov,
++		   unsigned long int liovcnt,
++		   const struct iovec *remote_iov,
++		   unsigned long int riovcnt, unsigned long int flags)
++{
++  return INLINE_SYSCALL (process_vm_writev, 6, pid, local_iov,
++			      liovcnt, remote_iov, riovcnt, flags);
++}
++#endif
+-- 
+2.30.2
+

+ 27 - 0
toolchain/uclibc-ng/patches/1.0.50/0002-mips64-time64-for-n32-ABI-breaks-a-lot-of-tests-disa.patch

@@ -0,0 +1,27 @@
+From dd01754e21da71706af07f3e56eade66fc9164fb Mon Sep 17 00:00:00 2001
+From: Waldemar Brodkorb <wbx@openadk.org>
+Date: Fri, 16 Aug 2024 16:59:28 +0200
+Subject: [PATCH 2/2] mips64: time64 for n32 ABI breaks a lot of tests, disable
+ it for now
+
+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+---
+ extra/Configs/Config.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in
+index 454b6ddb8..86bd20d76 100644
+--- a/extra/Configs/Config.in
++++ b/extra/Configs/Config.in
+@@ -1032,7 +1032,7 @@ config UCLIBC_USE_TIME64
+ 		   TARGET_i386                           || \
+ 		   TARGET_m68k                           || \
+ 		   TARGET_microblaze                     || \
+-		   (TARGET_mips && !CONFIG_MIPS_N64_ABI) || \
++		   (TARGET_mips && !(CONFIG_MIPS_N64_ABI || CONFIG_MIPS_N32_ABI)) || \
+ 		   TARGET_or1k                           || \
+ 		   TARGET_powerpc                        || \
+ 		   TARGET_riscv32                        || \
+-- 
+2.30.2
+