]> www.infradead.org Git - users/jedix/linux-maple.git/commit
sparc64, vdso: sparc64 vDSO implementation.
authorNick Alcock <nick.alcock@oracle.com>
Mon, 8 Dec 2014 13:32:19 +0000 (13:32 +0000)
committerAllen Pais <allen.pais@oracle.com>
Tue, 15 Sep 2015 12:08:52 +0000 (17:38 +0530)
commit63a29f1a2e6eca885d6f3fee359e67794d5b5ef3
tree763eba78dfb4195f4fd6374e18091f1f41685e52
parent6c37274115c7ce4cb6a4158622c1be22dbedde8d
sparc64, vdso: sparc64 vDSO implementation.

This commit adds a vDSO similar to that used on x86: in this commit, that vDSO
is empty bar the ELF note used by glibc to verify that it knows about this vDSO.
The vDSO's location is somewhat randomized, so, as a consequence, tends to
randomize the locations of other shared libraries too.  (The randomization
respects /proc/sys/kernel/randomize_va_space.)

It is derived from the implementation in recent kernels, in that it uses a C
generator to translate the vDSO shared library into C code and validate that it
contains no relocations and the like.

Notes for future improvement:

 - There is no support for a vDSO in 32-bit userspace yet.  This is just because
   I want to get the sparc64 version working first: the compat vDSO
   implementation adds significant complexity.

 - The vDSO randomization process is ugly: we are calling get_unmapped_area()
   twice, with a randomization in the middle.  Eventually,
   arch_get_unmapped_area() on SPARC64 should learn about PF_RANDOMIZE, as it
   has on other arches.

Orabug: 20861959
Signed-off-by: Nick Alcock <nick.alcock@oracle.com>
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
(cherry picked from commit 2da875e6f5781dd196e9f055cd53a3ac0d80aaaa)
20 files changed:
Documentation/kernel-parameters.txt
arch/sparc/Kbuild
arch/sparc/Makefile
arch/sparc/include/asm/elf_64.h
arch/sparc/include/asm/mmu_64.h
arch/sparc/include/asm/page_64.h
arch/sparc/include/asm/thread_info_32.h
arch/sparc/include/asm/thread_info_64.h
arch/sparc/include/asm/vdso.h [new file with mode: 0644]
arch/sparc/include/asm/vvar.h [new file with mode: 0644]
arch/sparc/include/uapi/asm/auxvec.h
arch/sparc/vdso/.gitignore [new file with mode: 0644]
arch/sparc/vdso/Makefile [new file with mode: 0644]
arch/sparc/vdso/checkundef.sh [new file with mode: 0644]
arch/sparc/vdso/vdso-layout.lds.S [new file with mode: 0644]
arch/sparc/vdso/vdso-note.S [new file with mode: 0644]
arch/sparc/vdso/vdso.lds.S [new file with mode: 0644]
arch/sparc/vdso/vdso2c.c [new file with mode: 0644]
arch/sparc/vdso/vdso2c.h [new file with mode: 0644]
arch/sparc/vdso/vma.c [new file with mode: 0644]