f6b46ebf90
This revamps the vDSO linker script to lay things out with the best packing of the data and good, separate alignment of the code. The rigid layout using VDSO_TEXT_OFFSET no longer matters to the kernel. I've moved the layout parts of the linker script into a new include file, vdso-layout.lds.S; this is in preparation for sharing the script for the 32-bit vDSO builds too. Signed-off-by: Roland McGrath <roland@redhat.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
37 lines
862 B
ArmAsm
37 lines
862 B
ArmAsm
/*
|
|
* Linker script for 64-bit vDSO.
|
|
* We #include the file to define the layout details.
|
|
* Here we only choose the prelinked virtual address.
|
|
*
|
|
* This file defines the version script giving the user-exported symbols in
|
|
* the DSO. We can define local symbols here called VDSO* to make their
|
|
* values visible using the asm-x86/vdso.h macros from the kernel proper.
|
|
*/
|
|
|
|
#define VDSO_PRELINK 0xffffffffff700000
|
|
#include "vdso-layout.lds.S"
|
|
|
|
/*
|
|
* This controls what userland symbols we export from the vDSO.
|
|
*/
|
|
VERSION {
|
|
LINUX_2.6 {
|
|
global:
|
|
clock_gettime;
|
|
__vdso_clock_gettime;
|
|
gettimeofday;
|
|
__vdso_gettimeofday;
|
|
getcpu;
|
|
__vdso_getcpu;
|
|
local: *;
|
|
};
|
|
}
|
|
|
|
VDSO64_PRELINK = VDSO_PRELINK;
|
|
|
|
/*
|
|
* Define VDSO64_x for each VEXTERN(x), for use via VDSO64_SYMBOL.
|
|
*/
|
|
#define VEXTERN(x) VDSO64_ ## x = vdso_ ## x;
|
|
#include "vextern.h"
|
|
#undef VEXTERN
|