linux-um.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Benjamin Berg <benjamin@sipsolutions.net>
To: linux-um@lists.infradead.org, "Willy Tarreau" <w@1wt.eu>,
	"Thomas Weißschuh" <linux@weissschuh.net>,
	linux-kselftest@vger.kernel.org,
	"Arnaldo Carvalho de Melo" <acme@redhat.com>
Cc: linux-kernel@vger.kernel.org, Benjamin Berg <benjamin.berg@intel.com>
Subject: [PATCH v3 00/12] Start porting UML to nolibc
Date: Wed, 24 Sep 2025 16:20:47 +0200	[thread overview]
Message-ID: <20250924142059.527768-1-benjamin@sipsolutions.net> (raw)

From: Benjamin Berg <benjamin.berg@intel.com>

This patchset is an attempt to start a nolibc port of UML. The goal is
to port UML to use nolibc in smaller chunks to make the switch more
manageable.

Using nolibc has the advantage that it is a smaller runtime and it
allows us to be in full control about all memory mappings that are done.
Another libc on the other hand might map memory unaware of UML, causing
collisions with the UML memory layout. Such mappings could even happen
before UML has fully initialized (e.g. rseq being mapped into the
physical or vmalloc memory areas).

There are three parts to this patchset:
 * Two patches to use tools/include headers instead of kernel headers
   for userspace files.
 * A few nolibc fixes and a new NOLIBC_NO_RUNTIME compile flag for it
 * Finally nolibc build support for UML and switching two files while
   adding the appropriate support in nolibc itself.

v1 of this patchset was
  https://lore.kernel.org/all/20250915071115.1429196-1-benjamin@sipsolutions.net

v2:
  https://lore.kernel.org/all/20250919153420.727385-1-benjamin@sipsolutions.net

Changes in v3:
- sys_ptrace is now not a varadic function
- improve printf %m implementation
- keep perror as function available with NOLIBC_IGNORE_ERRNO
- change syscall guard and fix i386 build

Changes in v2:
- add sys/uio.h and sys/ptrace.h to nolibc
- Use NOLIBC_NO_RUNTIME to disable nolibc startup code
- Fix out-of-tree build
- various small improvements and cleanups

Benjamin

Benjamin Berg (12):
  tools compiler.h: fix __used definition
  um: use tools/include for user files
  tools/nolibc/stdio: let perror work when NOLIBC_IGNORE_ERRNO is set
  tools/nolibc/dirent: avoid errno in readdir_r
  tools/nolibc: implement %m if errno is not defined
  tools/nolibc: use __fallthrough__ rather than fallthrough
  tools/nolibc: add option to disable runtime
  um: add infrastructure to build files using nolibc
  um: use nolibc for the --showconfig implementation
  tools/nolibc: add uio.h with readv and writev
  tools/nolibc: add ptrace support
  um: switch ptrace FP register access to nolibc

 arch/um/Makefile                             | 38 ++++++++++++---
 arch/um/include/shared/init.h                |  2 +-
 arch/um/include/shared/os.h                  |  2 +
 arch/um/include/shared/user.h                |  6 ---
 arch/um/kernel/Makefile                      |  2 +-
 arch/um/kernel/skas/stub.c                   |  1 +
 arch/um/kernel/skas/stub_exe.c               |  4 +-
 arch/um/os-Linux/skas/process.c              |  6 +--
 arch/um/os-Linux/start_up.c                  |  4 +-
 arch/um/scripts/Makefile.rules               | 10 +++-
 arch/x86/um/Makefile                         |  6 ++-
 arch/x86/um/os-Linux/Makefile                |  5 +-
 arch/x86/um/os-Linux/registers.c             | 20 ++------
 arch/x86/um/user-offsets.c                   |  1 -
 tools/include/linux/compiler.h               |  2 +-
 tools/include/nolibc/Makefile                |  2 +
 tools/include/nolibc/arch-arm.h              |  2 +
 tools/include/nolibc/arch-arm64.h            |  2 +
 tools/include/nolibc/arch-loongarch.h        |  2 +
 tools/include/nolibc/arch-m68k.h             |  2 +
 tools/include/nolibc/arch-mips.h             |  2 +
 tools/include/nolibc/arch-powerpc.h          |  2 +
 tools/include/nolibc/arch-riscv.h            |  2 +
 tools/include/nolibc/arch-s390.h             |  2 +
 tools/include/nolibc/arch-sh.h               |  2 +
 tools/include/nolibc/arch-sparc.h            |  2 +
 tools/include/nolibc/arch-x86.h              |  4 ++
 tools/include/nolibc/compiler.h              |  4 +-
 tools/include/nolibc/crt.h                   |  3 ++
 tools/include/nolibc/dirent.h                |  6 +--
 tools/include/nolibc/nolibc.h                |  2 +
 tools/include/nolibc/stackprotector.h        |  2 +
 tools/include/nolibc/stdio.h                 | 10 +++-
 tools/include/nolibc/stdlib.h                |  2 +
 tools/include/nolibc/sys.h                   |  3 +-
 tools/include/nolibc/sys/auxv.h              |  3 ++
 tools/include/nolibc/sys/ptrace.h            | 44 ++++++++++++++++++
 tools/include/nolibc/sys/uio.h               | 49 ++++++++++++++++++++
 tools/testing/selftests/nolibc/nolibc-test.c | 11 +++++
 39 files changed, 221 insertions(+), 53 deletions(-)
 create mode 100644 tools/include/nolibc/sys/ptrace.h
 create mode 100644 tools/include/nolibc/sys/uio.h

-- 
2.51.0



             reply	other threads:[~2025-09-24 14:21 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-24 14:20 Benjamin Berg [this message]
2025-09-24 14:20 ` [PATCH v3 01/12] tools compiler.h: fix __used definition Benjamin Berg
2025-09-24 14:20 ` [PATCH v3 02/12] um: use tools/include for user files Benjamin Berg
2025-09-24 14:20 ` [PATCH v3 03/12] tools/nolibc/stdio: let perror work when NOLIBC_IGNORE_ERRNO is set Benjamin Berg
2025-09-25 16:22   ` Thomas Weißschuh
2025-09-24 14:20 ` [PATCH v3 04/12] tools/nolibc/dirent: avoid errno in readdir_r Benjamin Berg
2025-09-24 14:20 ` [PATCH v3 05/12] tools/nolibc: implement %m if errno is not defined Benjamin Berg
2025-09-25 16:24   ` Thomas Weißschuh
2025-09-24 14:20 ` [PATCH v3 06/12] tools/nolibc: use __fallthrough__ rather than fallthrough Benjamin Berg
2025-09-24 14:20 ` [PATCH v3 07/12] tools/nolibc: add option to disable runtime Benjamin Berg
2025-09-24 14:20 ` [PATCH v3 08/12] um: add infrastructure to build files using nolibc Benjamin Berg
2025-09-25 16:36   ` Thomas Weißschuh
2025-09-24 14:20 ` [PATCH v3 09/12] um: use nolibc for the --showconfig implementation Benjamin Berg
2025-09-26 12:57   ` kernel test robot
2025-10-20 14:21     ` Thomas Weißschuh
2025-10-29 14:07       ` Benjamin Berg
2025-09-24 14:20 ` [PATCH v3 10/12] tools/nolibc: add uio.h with readv and writev Benjamin Berg
2025-09-24 14:20 ` [PATCH v3 11/12] tools/nolibc: add ptrace support Benjamin Berg
2025-09-25 16:28   ` Thomas Weißschuh
2025-09-24 14:20 ` [PATCH v3 12/12] um: switch ptrace FP register access to nolibc Benjamin Berg

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=20250924142059.527768-1-benjamin@sipsolutions.net \
    --to=benjamin@sipsolutions.net \
    --cc=acme@redhat.com \
    --cc=benjamin.berg@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-um@lists.infradead.org \
    --cc=linux@weissschuh.net \
    --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;
as well as URLs for NNTP newsgroup(s).