-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add support for the x32 VDSO. The x32 VDSO takes advantage of the similarity between the x86-64 and the x32 ABIs to contain the same content, only the container is different, as the x32 VDSO obviously is an x32 shared object. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
- Loading branch information
H. J. Lu
authored and
H. Peter Anvin
committed
Feb 20, 2012
1 parent
5fd92e6
commit 1a21d4e
Showing
6 changed files
with
177 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
#include <asm/page_types.h> | ||
#include <linux/linkage.h> | ||
#include <linux/init.h> | ||
|
||
__PAGE_ALIGNED_DATA | ||
|
||
.globl vdsox32_start, vdsox32_end | ||
.align PAGE_SIZE | ||
vdsox32_start: | ||
.incbin "arch/x86/vdso/vdsox32.so" | ||
vdsox32_end: | ||
.align PAGE_SIZE /* extra data here leaks to userspace. */ | ||
|
||
.previous | ||
|
||
.globl vdsox32_pages | ||
.bss | ||
.align 8 | ||
.type vdsox32_pages, @object | ||
vdsox32_pages: | ||
.zero (vdsox32_end - vdsox32_start + PAGE_SIZE - 1) / PAGE_SIZE * 8 | ||
.size vdsox32_pages, .-vdsox32_pages |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
/* | ||
* Linker script for x32 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 0 | ||
#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; | ||
time; | ||
__vdso_time; | ||
local: *; | ||
}; | ||
} | ||
|
||
VDSOX32_PRELINK = VDSO_PRELINK; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters