mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-11 08:18:47 +00:00
ffd3eaf178
The original 2005 patch that introduced the powerpc vdso, pre-git ("ppc64: Implement a vDSO and use it for signal trampoline") notes that: ... symbols exposed by the vDSO aren't "normal" function symbols, apps can't be expected to link against them directly, the vDSO's are both seen as if they were linked at 0 and the symbols just contain offsets to the various functions. This is done on purpose to avoid a relocation step (ppc64 functions normally have descriptors with abs addresses in them). When glibc uses those functions, it's expected to use it's own trampolines that know how to reach them. Despite that explanation, there remains dead #ifdef VDS64_HAS_DESCRIPTORS code-blocks that provide alternate function definitions that setup function descriptors. Since VDS64_HAS_DESCRIPTORS has been unused for all these years, we might as well finally remove it from the codebase. Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20200224211848.26087-1-joe.lawrence@redhat.com
57 lines
1.0 KiB
C
57 lines
1.0 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __PPC64_VDSO_H__
|
|
#define __PPC64_VDSO_H__
|
|
|
|
#ifdef __KERNEL__
|
|
|
|
/* Default link addresses for the vDSOs */
|
|
#define VDSO32_LBASE 0x0
|
|
#define VDSO64_LBASE 0x0
|
|
|
|
/* Default map addresses for 32bit vDSO */
|
|
#define VDSO32_MBASE 0x100000
|
|
|
|
#define VDSO_VERSION_STRING LINUX_2.6.15
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
/* Offsets relative to thread->vdso_base */
|
|
extern unsigned long vdso64_rt_sigtramp;
|
|
extern unsigned long vdso32_sigtramp;
|
|
extern unsigned long vdso32_rt_sigtramp;
|
|
|
|
int vdso_getcpu_init(void);
|
|
|
|
#else /* __ASSEMBLY__ */
|
|
|
|
#ifdef __VDSO64__
|
|
#define V_FUNCTION_BEGIN(name) \
|
|
.globl name; \
|
|
name: \
|
|
|
|
#define V_FUNCTION_END(name) \
|
|
.size name,.-name;
|
|
|
|
#define V_LOCAL_FUNC(name) (name)
|
|
#endif /* __VDSO64__ */
|
|
|
|
#ifdef __VDSO32__
|
|
|
|
#define V_FUNCTION_BEGIN(name) \
|
|
.globl name; \
|
|
.type name,@function; \
|
|
name: \
|
|
|
|
#define V_FUNCTION_END(name) \
|
|
.size name,.-name;
|
|
|
|
#define V_LOCAL_FUNC(name) (name)
|
|
|
|
#endif /* __VDSO32__ */
|
|
|
|
#endif /* __ASSEMBLY__ */
|
|
|
|
#endif /* __KERNEL__ */
|
|
|
|
#endif /* __PPC64_VDSO_H__ */
|