This implements new vDSO for x86-64. The concept is similarto the existing vDSOs on i386 and PPC. x86-64 has had staticvsyscalls before, but these are not flexible enough anymore.

A vDSO is a ELF shared library supplied by the kernel that is mapped into user address space. The vDSO mapping is randomized for each processfor security reasons.

Doing this was needed for clock_gettime, because clock_gettimealways needs a syscall fallback and having one at a fixedaddress would have made buffer overflow exploits too easy to write.

The vdso can be disabled with vdso=0

It currently includes a new gettimeofday implemention and optimizedclock_gettime(). The gettimeofday implementation is slightly fasterthan the one in the old vsyscall. clock_gettime is significantly faster than the syscall for CLOCK_MONOTONIC and CLOCK_REALTIME.

The new calls are generally faster than the old vsyscall.

Advantages over the old x86-64 vsyscalls:- Extensible- Randomized- Cleaner- Easier to virtualize (the old static address range previously causesoverhead e.g. for Xen because it has to create special page tables for it)