aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>2008-01-30 13:30:41 +0100
committerIngo Molnar <mingo@elte.hu>2008-01-30 13:30:41 +0100
commit7f3646aa16f496201e045183402c6614fa27b0c7 (patch)
treeafbee61e10ce854f683e27b0fdd0097fc9200f75 /include
parentx86 vDSO: generate vdso-syms.lds (diff)
downloadlinux-dev-7f3646aa16f496201e045183402c6614fa27b0c7.tar.xz
linux-dev-7f3646aa16f496201e045183402c6614fa27b0c7.zip
x86 vDSO: use vdso-syms.lds
This patch changes the kernel's references to addresses in the vDSO image to be based on the symbols defined by vdso-syms.lds instead of the old vdso-syms.o symbols. This is all wrapped up in a macro defined by the new asm-x86/vdso.h header; that's the only place in the kernel source that has to know the details of the scheme for getting vDSO symbol values. 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>
Diffstat (limited to 'include')
-rw-r--r--include/asm-x86/vdso.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/include/asm-x86/vdso.h b/include/asm-x86/vdso.h
new file mode 100644
index 000000000000..9379ec06fd1f
--- /dev/null
+++ b/include/asm-x86/vdso.h
@@ -0,0 +1,14 @@
+#ifndef _ASM_X86_VDSO_H
+#define _ASM_X86_VDSO_H 1
+
+extern const char VDSO64_PRELINK[];
+
+/*
+ * Given a pointer to the vDSO image, find the pointer to VDSO64_name
+ * as that symbol is defined in the vDSO sources or linker script.
+ */
+#define VDSO64_SYMBOL(base, name) ({ \
+ extern const char VDSO64_##name[]; \
+ (void *) (VDSO64_##name - VDSO64_PRELINK + (unsigned long) (base)); })
+
+#endif /* asm-x86/vdso.h */