Viller Hsiao presents information on Linux vsyscall and vDSO. vDSO (virtual dynamic shared object) is mapped into userspace and contains implementations of common system calls to make them faster. It gets benefits from ASLR and allows additional system calls compared to the older vsyscall method. The kernel generates the vDSO shared object which is then loaded and accessed by the glibc dynamic linker to provide optimized system call implementations to applications.
14. 24/01/2017 14
MMAP of vDSO
/* vdso man page */
void *vdso =
(uintptr_t) getauxval(AT_SYSINFO_EHDR);
●
vDSO man page says that we can get vDSO
address from ELF auxiliary vector
– What is ELF auiliary vector?
30. 1/24/17 30/32
Reference
[1] Linux Programmer's Manual VDSO(7)
[2] Adrien schischi Schildknecht (Mar. 2014), “vsyscall and vDSO”
[3] The Definitive Guide to Linux System Calls
[4] David Drysdale (Feb. 2015), “How programs get run: ELF binaries“, LWN
[5] Kevin Brodsky (Nov. 2016), “The vDSO on arm64”, Linux Plumbers Conference
[6] Linux程序的加载、运行和终止