[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5502ceaf-0b40-4961-b9ba-0c5e63498778@t-8ch.de>
Date: Mon, 15 Sep 2025 11:07:51 +0200
From: Thomas Weißschuh <linux@...ssschuh.net>
To: Benjamin Berg <benjamin@...solutions.net>
Cc: linux-um@...ts.infradead.org, Willy Tarreau <w@....eu>,
linux-kselftest@...r.kernel.org, Arnaldo Carvalho de Melo <acme@...hat.com>,
linux-kernel@...r.kernel.org, Tiwei Bie <tiwei.btw@...group.com>,
Benjamin Berg <benjamin.berg@...el.com>
Subject: Re: [PATCH 9/9] um: switch ptrace FP register access to nolibc
On 2025-09-15 09:11:15+0200, Benjamin Berg wrote:
> From: Benjamin Berg <benjamin.berg@...el.com>
>
> The registers.c file only contain the routines for floating point
> register access in ptrace mode and initial size detection. The file can
> be moved over to nolibc by replacing the ptrace libc call with a simple
> wrapper that does a direct syscall.
>
> Signed-off-by: Benjamin Berg <benjamin.berg@...el.com>
> ---
> arch/x86/um/os-Linux/Makefile | 5 ++++-
> arch/x86/um/os-Linux/registers.c | 22 ++++++++--------------
> 2 files changed, 12 insertions(+), 15 deletions(-)
>
> diff --git a/arch/x86/um/os-Linux/Makefile b/arch/x86/um/os-Linux/Makefile
> index 77a308aaa5ec..d37320430822 100644
> --- a/arch/x86/um/os-Linux/Makefile
> +++ b/arch/x86/um/os-Linux/Makefile
> @@ -3,10 +3,13 @@
> # Licensed under the GPL
> #
>
> -obj-y = registers.o mcontext.o
> +obj-y = mcontext.o
>
> obj-$(CONFIG_X86_32) += tls.o
>
> USER_OBJS := $(obj-y)
>
> +obj-y += registers.o
> +NOLIBC_OBJS := registers.o
> +
> include $(srctree)/arch/um/scripts/Makefile.rules
> diff --git a/arch/x86/um/os-Linux/registers.c b/arch/x86/um/os-Linux/registers.c
> index eb1cdadc8a61..55bce0d3f5d2 100644
> --- a/arch/x86/um/os-Linux/registers.c
> +++ b/arch/x86/um/os-Linux/registers.c
> @@ -6,18 +6,20 @@
>
> #include <errno.h>
Given that you are explicitly disabling errno support for nolibc, is
this include necessary?
> #include <stdlib.h>
> -#include <sys/ptrace.h>
> +#include <linux/ptrace.h>
> #ifdef __i386__
> #include <sys/user.h>
> #endif
> #include <longjmp.h>
> #include <sysdep/ptrace_user.h>
> -#include <sys/uio.h>
> +#include <linux/uio.h>
It looks fairly trivial to add sys/uio.h to nolibc.
Only 'struct iovec' (already provided by the UAPI) and readv()/writev()
are necessary.
> #include <asm/sigcontext.h>
> #include <linux/elf.h>
> #include <registers.h>
> #include <sys/mman.h>
>
> +#define my_ptrace(...) my_syscall4(__NR_ptrace, __VA_ARGS__)
Why not add sys/ptrace.h to nolibc and then use sys_ptrace()?
In general I'm not a fan of the my_syscall() naming scheme and would
like to change this in nolibc itself, so having fewer external users
would be nice.
> +
> static unsigned long ptrace_regset;
> unsigned long host_fp_size;
(...)
Powered by blists - more mailing lists