On 2025-09-15 09:11:15+0200, Benjamin Berg wrote: > From: Benjamin Berg <benjamin.b...@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.b...@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; (...)