[PATCH v5 00/24] vdso: Reject absolute relocations during build
Thomas Weißschuh
thomas.weissschuh at linutronix.de
Mon Sep 7 23:33:34 PDT 2026
The compiler can emit absolute relocations in vDSO code,
which are invalid in vDSO code.
Detect them at compile-time.
libc elf.h is missing some of the relocation constants,
so make use of the kernels own UAPI headers instead.
Patches 13 onward contain the architecture specific changes,
interesting for the architecture maintaines.
Kbuild and Rust folks: This contains custom definitions of hostprog
bindgen and rust library commands.
These are currently only defined inside the subsystem directory.
Let me know if they should go into scripts/Makefile.host.
Signed-off-by: Thomas Weißschuh <thomas.weissschuh at linutronix.de>
---
Changes in v5:
- Rebase on v7.3-rc1
- s/HOSTRUSTLIB/HOSTRUSTC L/
- Pick up review tags.
- Also handle SPARC.
- Build 'vdsocheck' during the prepare phase.
- Drop now unnecessary riscv LTO preparation patches.
- Link to v4: https://lore.kernel.org/r/20250812-vdso-absolute-reloc-v4-0-61a8b615e5ec@linutronix.de
Changes in v4:
- Replace the inline shell logic with a dedicated build-time tool
- Link to v3: https://lore.kernel.org/r/20250611-vdso-absolute-reloc-v3-0-47897d73784b@linutronix.de
Changes in v3:
- Drop already applied bugfix for arm64
- Disable LTO for the riscv vDSO, as it is incompatible
- Link to v2: https://lore.kernel.org/r/20250430-vdso-absolute-reloc-v2-0-5efcc3bc4b26@linutronix.de
Changes in v2:
- Link to openend (invalid) GCC bug containing more explanations
- Refine commit messages
- Don't fail on commit absolute relocations in debug info
- Link to v1: https://lore.kernel.org/r/20250429-vdso-absolute-reloc-v1-0-987a0afd10b5@linutronix.de
---
Thomas Weißschuh (24):
elf, uapi: Add a header for relocation constants
x86/elf, um/x86/elf: Move relocation constants to UAPI
ARM: elf: Move relocation constants to UAPI
arm64: elf: Move relocation constants to UAPI
powerpc/elf: Move relocation constants to UAPI
riscv: elf: Move relocation constants to UAPI
LoongArch: Move relocation constants to UAPI
s390/elf: Move relocation constants to UAPI
MIPS: ELF: Move relocation constants to UAPI
sparc: elf: Move relocation constants to UAPI
tools headers UAPI: Sync ELF headers with the kernel sources
vdso: Add the vdsocheck tool
x86/vdso: Enable the vdsocheck tool
ARM: vdso: Enable the vdsocheck tool
arm64: vdso: Enable the vdsocheck tool
powerpc/elf: Add 32-bit REL16 relocation definitions
powerpc/vdso: Enable the vdsocheck tool
riscv: vdso: Enable the vdsocheck tool
LoongArch: vDSO: Enable the vdsocheck tool
s390/vdso: Enable the vdsocheck tool
MIPS: ELF: Add more PC-relative relocation definitions
MIPS: vdso: Enable the vdsocheck tool
sparc: vdso: Enable the vdsocheck tool
vDSO: Automatically enable VDSO_CHECK
Makefile | 19 +
arch/arm/include/asm/elf.h | 24 -
arch/arm/vdso/Makefile | 4 +-
arch/arm64/include/asm/elf.h | 55 ---
arch/arm64/kernel/vdso/Makefile | 4 +-
arch/loongarch/include/asm/elf.h | 130 -----
arch/loongarch/vdso/Makefile | 4 +-
arch/mips/include/asm/elf.h | 55 ---
arch/mips/vdso/Makefile | 8 +-
arch/powerpc/include/uapi/asm/elf.h | 201 --------
arch/powerpc/kernel/vdso/Makefile | 4 +-
arch/riscv/include/uapi/asm/elf.h | 66 ---
arch/riscv/kernel/vdso/Makefile | 4 +-
arch/s390/include/asm/elf.h | 83 ----
arch/s390/kernel/vdso/Makefile | 4 +-
arch/sparc/include/asm/elf_32.h | 43 --
arch/sparc/include/asm/elf_64.h | 44 --
arch/sparc/vdso/Makefile | 5 +-
arch/x86/entry/vdso/common/Makefile.include | 2 +-
arch/x86/include/asm/elf.h | 33 --
arch/x86/um/asm/elf.h | 33 --
include/uapi/linux/elf-r.h | 705 ++++++++++++++++++++++++++++
include/uapi/linux/elf.h | 1 +
lib/vdso/Kconfig | 7 +
lib/vdso/Makefile | 2 +
lib/vdso/Makefile.include | 14 +
lib/vdso/check/.gitignore | 3 +
lib/vdso/check/Makefile | 34 ++
lib/vdso/check/elf.rs | 498 ++++++++++++++++++++
lib/vdso/check/vdsocheck.rs | 299 ++++++++++++
tools/include/uapi/linux/elf-em.h | 71 +++
tools/include/uapi/linux/elf-r.h | 705 ++++++++++++++++++++++++++++
tools/include/uapi/linux/elf.h | 112 ++++-
33 files changed, 2479 insertions(+), 797 deletions(-)
---
base-commit: 2f737a133fad3808f9993f704fb27fd7791a0a41
change-id: 20250428-vdso-absolute-reloc-a226293c1761
Best regards,
--
Thomas Weißschuh <thomas.weissschuh at linutronix.de>
More information about the linux-riscv
mailing list