[PATCH 9/9] um: switch ptrace FP register access to nolibc
Thomas Weißschuh
linux at weissschuh.net
Mon Sep 15 02:07:51 PDT 2025
On 2025-09-15 09:11:15+0200, Benjamin Berg wrote:
> From: Benjamin Berg <benjamin.berg at intel.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 at intel.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;
(...)
More information about the linux-um
mailing list