[PATCH v5 17/24] powerpc/vdso: Enable the vdsocheck tool
R Nageswara Sastry
rnsastry at linux.ibm.com
Tue Sep 8 07:02:37 PDT 2026
On 08.09.2026 12:03 PM, Thomas Weißschuh wrote:
> The vdsocheck tool validates the object files and final .so library.
> It can detect if the compiler created relocations which are incompatible
> with the vDSO which need to be worked around.
>
> Wire it up for the architecture.
>
> Signed-off-by: Thomas Weißschuh <thomas.weissschuh at linutronix.de>
Tested-by: R Nageswara Sastry <rnsastry at linux.ibm.com>
System: ppc64le LPAR (IBM POWER), Linux 7.3-rc2
> ---
> arch/powerpc/Kconfig | 1 +
> arch/powerpc/kernel/vdso/Makefile | 4 ++--
> lib/vdso/check/vdsocheck.rs | 27 +++++++++++++++++++++++++++
> 3 files changed, 30 insertions(+), 2 deletions(-)
>
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 2580e27e4328..f19e225cfc5c 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -330,6 +330,7 @@ config PPC
> select SYSCTL_EXCEPTION_TRACE
> select THREAD_INFO_IN_TASK
> select TRACE_IRQFLAGS_SUPPORT
> + select VDSO_CHECK
> select VDSO_DATASTORE
> select VDSO_GETRANDOM
> #
> diff --git a/arch/powerpc/kernel/vdso/Makefile b/arch/powerpc/kernel/vdso/Makefile
> index 368759f81708..ca20b91b4373 100644
> --- a/arch/powerpc/kernel/vdso/Makefile
> +++ b/arch/powerpc/kernel/vdso/Makefile
> @@ -81,9 +81,9 @@ targets += vdso64.lds
> CPPFLAGS_vdso64.lds += -P -C
>
> # link rule for the .so file, .lds has to be first
> -$(obj)/vdso32.so.dbg: $(obj)/vdso32.lds $(obj-vdso32) $(obj)/vgettimeofday-32.o $(obj)/vgetrandom-32.o $(obj)/crtsavres-32.o FORCE
> +$(obj)/vdso32.so.dbg: $(obj)/vdso32.lds $(obj-vdso32) $(obj)/vgettimeofday-32.o $(obj)/vgetrandom-32.o $(obj)/crtsavres-32.o $(vdsocheck) FORCE
> $(call if_changed,vdso32ld_and_check)
> -$(obj)/vdso64.so.dbg: $(obj)/vdso64.lds $(obj-vdso64) $(obj)/vgettimeofday-64.o $(obj)/vgetrandom-64.o FORCE
> +$(obj)/vdso64.so.dbg: $(obj)/vdso64.lds $(obj-vdso64) $(obj)/vgettimeofday-64.o $(obj)/vgetrandom-64.o $(vdsocheck) FORCE
> $(call if_changed,vdso64ld_and_check)
>
> # assembly rules for the .S files
> diff --git a/lib/vdso/check/vdsocheck.rs b/lib/vdso/check/vdsocheck.rs
> index e45a1fbc6829..429bdcd65818 100644
> --- a/lib/vdso/check/vdsocheck.rs
> +++ b/lib/vdso/check/vdsocheck.rs
> @@ -69,6 +69,33 @@ fn allowed_relocations_for_machine(machine: u16) -> Option<AllowedRelocations<'s
> ..Default::default()
> }
> .into(),
> + bindings::EM_PPC => AllowedRelocations {
> + in_object_file: &[
> + bindings::R_PPC_REL24,
> + bindings::R_PPC_REL14,
> + bindings::R_PPC_REL32,
> + bindings::R_PPC_REL16,
> + bindings::R_PPC_REL16_LO,
> + bindings::R_PPC_REL16_HI,
> + bindings::R_PPC_REL16_HA,
> + ],
> + ..Default::default()
> + }
> + .into(),
> + bindings::EM_PPC64 => AllowedRelocations {
> + in_object_file: &[
> + bindings::R_PPC64_REL24,
> + bindings::R_PPC64_REL14,
> + bindings::R_PPC64_REL32,
> + bindings::R_PPC64_REL64,
> + bindings::R_PPC64_REL16,
> + bindings::R_PPC64_REL16_LO,
> + bindings::R_PPC64_REL16_HI,
> + bindings::R_PPC64_REL16_HA,
> + ],
> + ..Default::default()
> + }
> + .into(),
> _ => None,
> }
> }
>
--
Thanks and Regards
R.Nageswara Sastry
More information about the linux-riscv
mailing list