From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: barebox@lists.infradead.org
Cc: Ahmad Fatoum <a.fatoum@pengutronix.de>
Subject: [PATCH 08/21] sandbox: switch to using PBL
Date: Thu, 5 Jun 2025 13:35:17 +0200 [thread overview]
Message-ID: <20250605113530.2076990-9-a.fatoum@pengutronix.de> (raw)
In-Reply-To: <20250605113530.2076990-1-a.fatoum@pengutronix.de>
The approach we inherited from Linux um doesn't scale well, because it
requires us to mask via macro every symbol that we define that clashes
with an external library and there are a lot of them in barebox due to
the minimal UNIX-like libc we have.
This clashing symbols are all in barebox proper, so by enabling PBL, we
can just leave PBL access to external symbols and link barebox proper,
so it has no references to external symbols.
That way we only need to list functions that are called between PBL and
proper and if we don't we get an error message.
Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
---
Makefile | 16 ++++-
arch/sandbox/Kconfig | 4 ++
arch/sandbox/Makefile | 70 +++++++++----------
arch/sandbox/board/.gitignore | 3 -
arch/sandbox/board/Makefile | 2 -
arch/sandbox/include/asm/barebox-sandbox.h | 10 +++
arch/sandbox/lib/.gitignore | 3 +
arch/sandbox/lib/Makefile | 2 +-
.../{board/barebox.lds.S => lib/pbl.lds.S} | 0
arch/sandbox/os/Makefile | 18 ++---
arch/sandbox/os/common.c | 3 +-
arch/sandbox/{lib => os}/unwind.c | 3 +-
arch/x86/um/Makefile | 4 +-
common/Kconfig | 2 +-
images/.gitignore | 1 +
images/Makefile | 1 +
images/Makefile.sandbox | 14 ++++
pbl/Kconfig | 2 +-
18 files changed, 99 insertions(+), 59 deletions(-)
create mode 100644 arch/sandbox/include/asm/barebox-sandbox.h
create mode 100644 arch/sandbox/lib/.gitignore
rename arch/sandbox/{board/barebox.lds.S => lib/pbl.lds.S} (100%)
rename arch/sandbox/{lib => os}/unwind.c (88%)
create mode 100644 images/Makefile.sandbox
diff --git a/Makefile b/Makefile
index 8fbe9e9622c2..6f8e1a312060 100644
--- a/Makefile
+++ b/Makefile
@@ -929,6 +929,7 @@ quiet_cmd_sysmap = SYSMAP System.map
# If CONFIG_KALLSYMS is set .version is already updated
# Generate System.map and verify that the content is consistent
# Use + in front of the barebox_version rule to silent warning with make -j2
+ifndef rule_barebox__
define rule_barebox__
$(if $(CONFIG_KALLSYMS),,+$(call cmd,barebox_version))
$(call cmd,barebox__)
@@ -936,6 +937,7 @@ define rule_barebox__
$(call cmd,prelink__)
$(call cmd,sysmap)
endef
+endif
ifdef CONFIG_KALLSYMS
# Generate section listing all symbols and add it into barebox $(kallsyms.o)
@@ -1050,6 +1052,18 @@ barebox.fit: images/barebox-$(CONFIG_ARCH_LINUX_NAME).fit
barebox.srec: barebox
$(OBJCOPY) -O srec $< $@
+quiet_cmd_barebox_proper__ = CC $@
+ cmd_barebox_proper__ = $(CC) -r -o $@ -Wl,--whole-archive $(BAREBOX_OBJS)
+
+.tmp_barebox.o: $(BAREBOX_OBJS) $(kallsyms.o) FORCE
+ $(if $(CONFIG_KALLSYMS),,+$(call cmd,barebox_version))
+ $(call cmd,barebox_proper__)
+ $(Q)echo 'savedcmd_$@ := $(cmd_barebox_proper__)' > $(@D)/.$(@F).cmd
+ $(Q)rm -f .old_version
+
+barebox.o: .tmp_barebox.o FORCE
+ $(call if_changed,objcopy)
+
# The actual objects are generated when descending,
# make sure no implicit rule kicks in
$(sort $(BAREBOX_OBJS)) $(BAREBOX_LDS) $(BAREBOX_PBL_OBJS): $(barebox-dirs) ;
@@ -1269,7 +1283,7 @@ CLEAN_DIRS += $(MODVERDIR)
CLEAN_FILES += barebox System.map include/generated/barebox_default_env.h \
.tmp_version .tmp_barebox* barebox.bin barebox.map \
.tmp_kallsyms* barebox.ldr compile_commands.json \
- barebox-flash-image \
+ .tmp_barebox.o barebox.o barebox-flash-image \
barebox.srec barebox.s5p barebox.ubl \
barebox.uimage \
barebox.efi barebox.canon-a1100.bin
diff --git a/arch/sandbox/Kconfig b/arch/sandbox/Kconfig
index b48eb29c7db4..4eebca6748b3 100644
--- a/arch/sandbox/Kconfig
+++ b/arch/sandbox/Kconfig
@@ -21,6 +21,10 @@ config SANDBOX
select ARCH_WANT_FRAME_POINTERS
select BAREBOX_CMDLINE
select HAVE_ARCH_BOOTM_OFTREE
+ select HAVE_PBL_IMAGE
+ select HAVE_PBL_MULTI_IMAGES
+ select PBL_IMAGE_NO_PIGGY
+ select PBL_CLOCKSOURCE if COMPILE_TEST
default y
config ARCH_LINUX_NAME
diff --git a/arch/sandbox/Makefile b/arch/sandbox/Makefile
index dbdf8a6e8117..2db1cb648a2b 100644
--- a/arch/sandbox/Makefile
+++ b/arch/sandbox/Makefile
@@ -17,7 +17,6 @@ machine-y := sandbox
board-y := arch/sandbox/board
BOARD := $(board-y)/
-lds-y := $(BOARD)/barebox.lds
HEADER_ARCH := $(SUBARCH)
HOST_DIR := arch/$(HEADER_ARCH)
@@ -29,28 +28,12 @@ common-y += $(HOST_DIR)/um/
KBUILD_CPPFLAGS += -I$(srctree)/$(HOST_DIR)/include
TEXT_BASE = $(CONFIG_TEXT_BASE)
-KBUILD_CFLAGS += -Dmalloc=barebox_malloc -Dcalloc=barebox_calloc \
- -Dmalloc_stats=barebox_malloc_stats -Dmemalign=barebox_memalign \
- -Dmalloc_usable_size=barebox_malloc_usable_size \
- -Dfree=barebox_free -Drealloc=barebox_realloc \
- -Dbrk=barebox_brk -Dsbrk=barebox_sbrk \
- -Dread=barebox_read -Dwrite=barebox_write \
- -Dopen=barebox_open -Dclose=barebox_close \
- -Dlseek=barebox_lseek -Dperror=barebox_perror \
- -Derrno=barebox_errno -Dgetc=barebox_getc \
- -Dputc=barebox_putc -Dfgetc=barebox_fgetc \
- -Dfputc=barebox_fputc -Dfgets=barebox_fgets \
- -Dfputs=barebox_fputs -Dsetenv=barebox_setenv \
- -Dgetenv=barebox_getenv -Dprintf=barebox_printf \
- -Dglob=barebox_glob -Dglobfree=barebox_globfree \
- -Dioctl=barebox_ioctl -Dfstat=barebox_fstat \
- -Dftruncate=barebox_ftruncate -Dasprintf=barebox_asprintf \
- -Dopendir=barebox_opendir -Dreaddir=barebox_readdir \
- -Dclosedir=barebox_closedir -Dreadlink=barebox_readlink \
- -Doptarg=barebox_optarg -Doptind=barebox_optind \
- -Dsetjmp=barebox_setjmp -Dlongjmp=barebox_longjmp \
- -Dmkdir=barebox_mkdir -Ddirname=barebox_dirname \
- -Dremove=barebox_remove -Dputchar=barebox_putchar
+
+SANDBOX_PBL2PROPER_GLUE_SYMS := \
+ putchar errno setjmp longjmp \
+ malloc_stats memalign malloc free realloc calloc brk sbrk
+
+KBUILD_CFLAGS += $(foreach s,$(SANDBOX_PBL2PROPER_GLUE_SYMS),-D$(s)=barebox_$(s))
machdirs := $(patsubst %,arch/sandbox/mach-%/,$(machine-y))
@@ -61,25 +44,27 @@ archprepare: maketools
PHONY += maketools
+export SANDBOX_LIBS BAREBOX_LDFLAGS
+
ifeq ($(CONFIG_SDL),y)
-SDL_LIBS := $(shell $(CROSS_PKG_CONFIG) sdl2 --libs)
+SANDBOX_LIBS += $(shell $(CROSS_PKG_CONFIG) sdl2 --libs)
endif
ifeq ($(CONFIG_GPIO_LIBFTDI1),y)
-FTDI1_LIBS := $(shell $(CROSS_PKG_CONFIG) libftdi1 --libs)
+SANDBOX_LIBS += $(shell $(CROSS_PKG_CONFIG) libftdi1 --libs)
endif
ifeq ($(CONFIG_ASAN),y)
KBUILD_CPPFLAGS += -fsanitize=address
-SANITIZER_LIBS += -fsanitize=address
+SANDBOX_LIBS += -fsanitize=address
ifeq ($(CONFIG_CC_IS_CLANG),y)
KBUILD_CPPFLAGS += -fno-sanitize-address-globals-dead-stripping
-BAREBOX_LDFLAGS += -fno-sanitize-address-globals-dead-stripping
+SANDBOX_LIBS += -fno-sanitize-address-globals-dead-stripping
endif
endif
ifeq ($(CONFIG_UBSAN),y)
-SANITIZER_LIBS += -fsanitize=undefined
+SANDBOX_LIBS += -fsanitize=undefined
endif
ifeq ($(CONFIG_SANDBOX_LINUX_I386),y)
@@ -89,17 +74,28 @@ KBUILD_AFLAGS += -m32
BAREBOX_LDFLAGS += -m32
endif
-BAREBOX_LDFLAGS += \
- -Wl,-T,$(BAREBOX_LDS) \
- -Wl,--whole-archive $(BAREBOX_OBJS) -Wl,--no-whole-archive \
- -lrt -pthread $(SDL_LIBS) $(FTDI1_LIBS) \
- $(SANITIZER_LIBS)
-
-cmd_barebox__ = $(CC) -o $@ $(BAREBOX_LDFLAGS)
-
common-y += $(BOARD) arch/sandbox/os/ arch/sandbox/lib/
-KBUILD_IMAGE := barebox
+SANDBOX_PROPER2PBL_GLUE_SYMS := \
+ strsep_unescaped start_barebox linux_get_stickypage_path \
+ stickypage mem_malloc_init \
+ barebox_register_filedev barebox_register_dtb barebox_register_console \
+ barebox_errno barebox_loglevel
+
+OBJCOPYFLAGS_barebox.o := $(addprefix --keep-global-symbol=, $(SANDBOX_PROPER2PBL_GLUE_SYMS))
+
+quiet_cmd_barebox__ = $(quiet_cmd_symlink)
+ cmd_barebox__ = ln -fsn --relative $(objtree)/images/barebox $(objtree)/barebox
+
+define rule_barebox__
+ $(call cmd,barebox__)
+ $(Q)echo 'savedcmd_$@ := $(cmd_barebox__)' > $(@D)/.$(@F).cmd
+endef
+
+all: barebox
+
+KBUILD_IMAGE := barebox.o
+BAREBOX_PROPER := $(KBUILD_IMAGE)
common-$(CONFIG_OFTREE) += arch/sandbox/dts/
diff --git a/arch/sandbox/board/.gitignore b/arch/sandbox/board/.gitignore
index 03987a700942..e69de29bb2d1 100644
--- a/arch/sandbox/board/.gitignore
+++ b/arch/sandbox/board/.gitignore
@@ -1,3 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-
-barebox.lds
diff --git a/arch/sandbox/board/Makefile b/arch/sandbox/board/Makefile
index 2b6346f6098d..b351504f11dd 100644
--- a/arch/sandbox/board/Makefile
+++ b/arch/sandbox/board/Makefile
@@ -14,6 +14,4 @@ obj-$(CONFIG_CMD_SANDBOX_CPUINFO) += cpuinfo.o
obj-$(CONFIG_LED) += led.o
bbenv-y += defaultenv-sandbox
-extra-y += barebox.lds
-
obj-y += stickypage.o
diff --git a/arch/sandbox/include/asm/barebox-sandbox.h b/arch/sandbox/include/asm/barebox-sandbox.h
new file mode 100644
index 000000000000..c029f9ea0086
--- /dev/null
+++ b/arch/sandbox/include/asm/barebox-sandbox.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#ifndef __ASM_BAREBOX_SANDBOX_H__
+#define __ASM_BAREBOX_SANDBOX_H__
+
+#define ENTRY_FUNCTION(name, argc, argv) \
+ int name(int argc, char *argv[]); \
+ int name(int argc, char *argv[])
+
+#endif
diff --git a/arch/sandbox/lib/.gitignore b/arch/sandbox/lib/.gitignore
new file mode 100644
index 000000000000..03987a700942
--- /dev/null
+++ b/arch/sandbox/lib/.gitignore
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+barebox.lds
diff --git a/arch/sandbox/lib/Makefile b/arch/sandbox/lib/Makefile
index 9535305d5bfa..1c2b374603ce 100644
--- a/arch/sandbox/lib/Makefile
+++ b/arch/sandbox/lib/Makefile
@@ -1,3 +1,3 @@
# SPDX-License-Identifier: GPL-2.0-only
-obj-$(CONFIG_ARCH_HAS_STACK_DUMP) += unwind.o
+obj- := __dummy__.o
diff --git a/arch/sandbox/board/barebox.lds.S b/arch/sandbox/lib/pbl.lds.S
similarity index 100%
rename from arch/sandbox/board/barebox.lds.S
rename to arch/sandbox/lib/pbl.lds.S
diff --git a/arch/sandbox/os/Makefile b/arch/sandbox/os/Makefile
index 9fb2a2ce864d..b305a142379e 100644
--- a/arch/sandbox/os/Makefile
+++ b/arch/sandbox/os/Makefile
@@ -4,7 +4,8 @@ machine-y := sandbox
machdirs := $(patsubst %,arch/sandbox/mach-%/,$(machine-y))
-KBUILD_CPPFLAGS = $(patsubst %,-I$(srctree)/%include,$(machdirs))
+KBUILD_CPPFLAGS = $(patsubst %,-I$(srctree)/%include,$(machdirs)) \
+ -I$(srctree)/arch/sandbox/include
KBUILD_CPPFLAGS += -D_FILE_OFFSET_BITS=64 -include $(objtree)/include/generated/autoconf.h
@@ -16,12 +17,13 @@ ifeq ($(CONFIG_SANDBOX_LINUX_I386),y)
KBUILD_CFLAGS += -m32
endif
-obj-y = common.o setjmp.o
-obj-$(CONFIG_DRIVER_NET_TAP) += tap.o
-obj-$(CONFIG_MALLOC_LIBC) += libc_malloc.o
+pbl-y = common.o setjmp.o
+pbl-$(CONFIG_DRIVER_NET_TAP) += tap.o
+pbl-$(CONFIG_MALLOC_LIBC) += libc_malloc.o
+pbl-$(CONFIG_ARCH_HAS_STACK_DUMP) += unwind.o
-CFLAGS_sdl.o = $(shell $(CROSS_PKG_CONFIG) sdl2 --cflags)
-obj-$(CONFIG_SDL) += sdl.o
+CFLAGS_sdl.pbl.o = $(shell $(CROSS_PKG_CONFIG) sdl2 --cflags)
+pbl-$(CONFIG_SDL) += sdl.o
-CFLAGS_ftdi.o = $(shell $(CROSS_PKG_CONFIG) libftdi1 --cflags)
-obj-$(CONFIG_GPIO_LIBFTDI1) += ftdi.o
+CFLAGS_ftdi.pbl.o = $(shell $(CROSS_PKG_CONFIG) libftdi1 --cflags)
+pbl-$(CONFIG_GPIO_LIBFTDI1) += ftdi.o
diff --git a/arch/sandbox/os/common.c b/arch/sandbox/os/common.c
index ef39f5336d60..3dbe61791ccd 100644
--- a/arch/sandbox/os/common.c
+++ b/arch/sandbox/os/common.c
@@ -46,6 +46,7 @@
*/
#include <mach/linux.h>
#include <mach/hostfile.h>
+#include <asm/barebox-sandbox.h>
#ifdef CONFIG_CONSOLE_NONE
int __attribute__((unused)) barebox_loglevel;
@@ -534,7 +535,7 @@ static struct option long_options[] = {
static const char optstring[] = "hm:i:c:e:d:O:I:B:x:y:";
-int main(int argc, char *argv[])
+ENTRY_FUNCTION(sandbox_main, argc, argv)
{
void *ram;
int opt, ret, fd, fd2;
diff --git a/arch/sandbox/lib/unwind.c b/arch/sandbox/os/unwind.c
similarity index 88%
rename from arch/sandbox/lib/unwind.c
rename to arch/sandbox/os/unwind.c
index f46365ac2b3b..d1608d075889 100644
--- a/arch/sandbox/lib/unwind.c
+++ b/arch/sandbox/os/unwind.c
@@ -1,10 +1,9 @@
// SPDX-License-Identifier: GPL-2.0-only
// Copyright 2019 Ahmad Fatoum
-#include <common.h>
-
void __sanitizer_print_stack_trace(void);
+void dump_stack(void);
void dump_stack(void)
{
__sanitizer_print_stack_trace();
diff --git a/arch/x86/um/Makefile b/arch/x86/um/Makefile
index d3764221a4c6..fc0442b78916 100644
--- a/arch/x86/um/Makefile
+++ b/arch/x86/um/Makefile
@@ -8,5 +8,5 @@ else
BITS := 64
endif
-AFLAGS_../lib/setjmp_$(BITS).o := -Dsetjmp=barebox_setjmp -Dlongjmp=barebox_longjmp
-obj-$(CONFIG_SANDBOX_SJLJ_ASM) += ../lib/setjmp_$(BITS).o
+AFLAGS_../lib/setjmp_$(BITS).pbl.o := -Dsetjmp=barebox_setjmp -Dlongjmp=barebox_longjmp
+pbl-$(CONFIG_SANDBOX_SJLJ_ASM) += ../lib/setjmp_$(BITS).o
diff --git a/common/Kconfig b/common/Kconfig
index fba6db3ab869..6d41b7048a32 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -965,7 +965,7 @@ config CONSOLE_DISABLE_INPUT
registered as consoles.
config PBL_CONSOLE
- depends on PBL_IMAGE
+ depends on PBL_IMAGE && !SANDBOX
depends on !CONSOLE_NONE
bool "Enable console support in PBL"
help
diff --git a/images/.gitignore b/images/.gitignore
index 8d5bd4a410cf..20133074bf87 100644
--- a/images/.gitignore
+++ b/images/.gitignore
@@ -23,6 +23,7 @@
*.mxssd
*.csfbin
pbl.lds
+barebox
barebox.x
barebox.z
barebox.sha.bin
diff --git a/images/Makefile b/images/Makefile
index 40400a95a935..e20d11e1501a 100644
--- a/images/Makefile
+++ b/images/Makefile
@@ -176,6 +176,7 @@ include $(srctree)/images/Makefile.mvebu
include $(srctree)/images/Makefile.mxs
include $(srctree)/images/Makefile.omap3
include $(srctree)/images/Makefile.rockchip
+include $(srctree)/images/Makefile.sandbox
include $(srctree)/images/Makefile.socfpga
include $(srctree)/images/Makefile.stm32mp
include $(srctree)/images/Makefile.tegra
diff --git a/images/Makefile.sandbox b/images/Makefile.sandbox
new file mode 100644
index 000000000000..0699a52663ef
--- /dev/null
+++ b/images/Makefile.sandbox
@@ -0,0 +1,14 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+SYMLINK_TARGET_barebox = sandbox_main.elf
+symlink-$(CONFIG_SANDBOX) += barebox
+
+ifeq ($(CONFIG_SANDBOX),y)
+
+quiet_cmd_elf__ = LD $@
+ cmd_elf__ = $(CC) -o $@ $(BAREBOX_LDFLAGS) \
+ -Wl,-T,$(pbl-lds) -Wl,--defsym=main=$(2) -Wl,--whole-archive \
+ $(obj)/../$(BAREBOX_PROPER) $(BAREBOX_PBL_OBJS) -Wl,--no-whole-archive \
+ -lrt -pthread $(SANDBOX_LIBS) $(LDFLAGS_$(@F))
+
+endif
diff --git a/pbl/Kconfig b/pbl/Kconfig
index e9fa35e29b19..cab9325d16e8 100644
--- a/pbl/Kconfig
+++ b/pbl/Kconfig
@@ -45,7 +45,7 @@ config USE_COMPRESSED_DTB
select XZ_DECOMPRESS if IMAGE_COMPRESSION_XZKERN
config PBL_RELOCATABLE
- depends on ARM || MIPS || RISCV
+ depends on ARM || MIPS || RISCV || SANDBOX
bool "relocatable pbl image"
help
Generate a pbl binary which can relocate itself during startup to run
--
2.39.5
next prev parent reply other threads:[~2025-06-05 11:37 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-05 11:35 [PATCH 00/21] sandbox: add libfuzzer-based fuzzing Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 01/21] pbl: add provision for architectures without piggy loader Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 02/21] firmware: make Layerscape FMan firmware proper-only Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 03/21] mci: sdhci: support compiling common SDHCI code for sandbox PBL Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 04/21] kbuild: define and use more generic symlink command Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 05/21] kbuild: collect compatibility symlink creation in symlink-y Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 06/21] kbuild: allow customizing barebox proper binary Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 07/21] sandbox: make available all CONFIG_ symbols to OS glue code Ahmad Fatoum
2025-06-05 11:35 ` Ahmad Fatoum [this message]
2025-06-05 11:35 ` [PATCH 09/21] kbuild: populate non-host CXX variables Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 10/21] string: add fortify source support Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 11/21] sandbox: populate UNAME_M variable Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 12/21] Add fuzzing infrastructure Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 13/21] filetype: add fuzz target Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 14/21] block: mark underlying cdev with DEVFS_IS_BLOCK_DEV Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 15/21] block: add lightweight ramdisk support Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 16/21] fuzz: add support for passing fuzz data as r/o ramdisk Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 17/21] partitions: add partition table parser fuzz target Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 18/21] fdt: add fuzz test Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 19/21] fit: " Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 20/21] Documentation: add LLVM libfuzzer documentation Ahmad Fatoum
2025-06-05 11:35 ` [PATCH 21/21] sandbox: add support for coverage info generation Ahmad Fatoum
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=20250605113530.2076990-9-a.fatoum@pengutronix.de \
--to=a.fatoum@pengutronix.de \
--cc=barebox@lists.infradead.org \
/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