public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Berg, Benjamin" <benjamin.berg@intel.com>
To: "linux@weissschuh.net" <linux@weissschuh.net>
Cc: "w@1wt.eu" <w@1wt.eu>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-um@lists.infradead.org" <linux-um@lists.infradead.org>,
	"linux-kselftest@vger.kernel.org"
	<linux-kselftest@vger.kernel.org>,
	"tiwei.btw@antgroup.com" <tiwei.btw@antgroup.com>,
	"acme@redhat.com" <acme@redhat.com>
Subject: Re: [PATCH 9/9] um: switch ptrace FP register access to nolibc
Date: Mon, 15 Sep 2025 11:09:40 +0000	[thread overview]
Message-ID: <8d6ee835fae809aa2703c51b8443878446245cfb.camel@intel.com> (raw)
In-Reply-To: <5502ceaf-0b40-4961-b9ba-0c5e63498778@t-8ch.de>

Hi,

On Mon, 2025-09-15 at 11:07 +0200, Thomas Weißschuh wrote:
> On 2025-09-15 09:11:15+0200, Benjamin Berg wrote:
> > From: Benjamin Berg <benjamin.berg@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@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?

I think it is technically correct as we do need ENODEV and ENOMEM to be
defined. Not that we actually need the include if we pull in nolibc.h.

Considering we would never build against libc, should we maybe just do
an explicit nolibc.h include and rely on it pulling in the rest
automatically? That seems a bit weird to me, but as-is we will never
notice when we forget an include.

> >  #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()?

Honestly, I just got a bit lazy at that point and this was a reasonable
proof that mixing nolibc with libc works fine. You are absolutely right
that it would be better to add this to nolibc.

> 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.

How about adding a sys_syscall macro? That would match the naming
scheme of the other functions. Then, once all users are ported, one can
simply change the my_ prefix to __nolibc_.

Benjamin

> 
> > +
> >  static unsigned long ptrace_regset;
> >  unsigned long host_fp_size;
> 
> (...)
Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Sean Fennelly, Jeffrey Schneiderman, Tiffany Doon Silva
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

  reply	other threads:[~2025-09-15 11:09 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-15  7:11 [PATCH 0/9] Start porting UML to nolibc Benjamin Berg
2025-09-15  7:11 ` [PATCH 1/9] tools compiler.h: fix __used definition Benjamin Berg
2025-09-15  8:39   ` Thomas Weißschuh
2025-09-15  7:11 ` [PATCH 2/9] um: use tools/include for user files Benjamin Berg
2025-09-15 10:40   ` kernel test robot
2025-09-15  7:11 ` [PATCH 3/9] tools/nolibc/stdio: remove perror if NOLIBC_IGNORE_ERRNO is set Benjamin Berg
2025-09-15  8:44   ` Thomas Weißschuh
2025-09-15  7:11 ` [PATCH 4/9] tools/nolibc/dirent: avoid errno in readdir_r Benjamin Berg
2025-09-15  8:45   ` Thomas Weißschuh
2025-09-15  7:11 ` [PATCH 5/9] tools/nolibc: use __fallthrough__ rather than fallthrough Benjamin Berg
2025-09-15  8:50   ` Thomas Weißschuh
2025-09-15  7:11 ` [PATCH 6/9] tools/nolibc: add option to disable startup code Benjamin Berg
2025-09-15  8:55   ` Thomas Weißschuh
2025-09-15  7:11 ` [PATCH 7/9] um: add infrastructure to build files using nolibc Benjamin Berg
2025-09-15  8:57   ` Thomas Weißschuh
2025-09-15  7:11 ` [PATCH 8/9] um: use nolibc for the --showconfig implementation Benjamin Berg
2025-09-15  7:11 ` [PATCH 9/9] um: switch ptrace FP register access to nolibc Benjamin Berg
2025-09-15  9:07   ` Thomas Weißschuh
2025-09-15 11:09     ` Berg, Benjamin [this message]
2025-09-15 11:22       ` Thomas Weißschuh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8d6ee835fae809aa2703c51b8443878446245cfb.camel@intel.com \
    --to=benjamin.berg@intel.com \
    --cc=acme@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-um@lists.infradead.org \
    --cc=linux@weissschuh.net \
    --cc=tiwei.btw@antgroup.com \
    --cc=w@1wt.eu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox