mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 20:54:03 +02:00
riscv: vdso: Add symbols for the alternative section boundaries
Currently the alternative sections are extracted from the vDSO binaries at runtime. This has runtime overhead and also doesn't work for the compat vDSO. Extract the offsets of the alternative section during the build with the existing symbol extraction machinery. Also add dummy symbols as fallback. Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de> Reviewed-by: Nam Cao <namcao@linutronix.de> Link: https://patch.msgid.link/20260630-riscv-vdso32-alternative-v1-1-a32fd89b7b1c@linutronix.de Signed-off-by: Paul Walmsley <pjw@kernel.org>
This commit is contained in:
parent
f61959a3a8
commit
7f2a7bbcd9
|
|
@ -19,10 +19,14 @@
|
|||
|
||||
#ifdef CONFIG_MMU
|
||||
#include <generated/vdso-offsets.h>
|
||||
#else
|
||||
extern size_t __vdso_alternatives_start_offset, __vdso_alternatives_end_offset;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RISCV_USER_CFI
|
||||
#include <generated/vdso-cfi-offsets.h>
|
||||
#else
|
||||
extern size_t __vdso_alternatives_start_cfi_offset, __vdso_alternatives_end_cfi_offset;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RISCV_USER_CFI
|
||||
|
|
@ -41,6 +45,8 @@
|
|||
#define COMPAT_VDSO_SYMBOL(base, name) \
|
||||
(void __user *)((unsigned long)(base) + compat__vdso_##name##_offset)
|
||||
|
||||
#else
|
||||
extern size_t compat__vdso_alternatives_start_offset, compat__vdso_alternatives_end_offset;
|
||||
#endif /* CONFIG_COMPAT */
|
||||
|
||||
extern char vdso_start[], vdso_end[];
|
||||
|
|
|
|||
|
|
@ -45,9 +45,11 @@ SECTIONS
|
|||
.text : { *(.text .text.*) } :text
|
||||
|
||||
. = ALIGN(4);
|
||||
__vdso_alternatives_start = .;
|
||||
.alternative : {
|
||||
*(.alternative)
|
||||
}
|
||||
__vdso_alternatives_end = .;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user