不实践还真是不知道,vdso,在32位和64位之间还有差别。
https://github.com/mzhan017/dump-vdso
32bit的vdso提供的接口函数:
mzhan017@:/mnt/d/dump-vdso$ ./dump-vdso-32 -s
Name Address Offset
---- ------- ------
__kernel_vsyscall 0xf7fa1560 0x00000560
__vdso_gettimeofday 0xf7fa1790 0x00000790
__vdso_clock_getres 0xf7fa2520 0x00001520
__vdso_clock_gettime64 0xf7fa2030 0x00001030
__kernel_sigreturn 0xf7fa1580 0x00000580
__vdso_time 0xf7fa1b40 0x00000b40
__kernel_rt_sigreturn 0xf7fa1590 0x00000590
__vdso_clock_gettime 0xf7fa1b80 0x00000b80
__vdso_getcpu 0xf7fa25b0 0x000015b0
64bit提供的
mzhan017@:/mnt/d/dump-vdso$ ./dump-vdso -s
Name Address Offset
---- ------- ------
clock_gettime 0x00007fffc1f8fa70 0x00000a70
__vdso_gettimeofday 0x00007fffc1f8f7b0 0x000007b0
clock_getres 0x00007fffc1f8fdd0 0x00000dd0
__vdso_clock_getres 0x00007fffc1f8fdd0 0x00000dd0
gettimeofday 0x00007fffc1f8f7b0 0x000007b0
__vdso_time 0x00007fffc1f8fa40 0x00000a40
__vdso_sgx_enter_enclave 0x00007fffc1f8fe70 0x00000e70
time 0x00007fffc1f8fa40 0x00000a40
__vdso_clock_gettime 0x00007fffc1f8fa70 0x00000a70
__vdso_getcpu 0x00007fffc1f8fe40 0x00000e40
getcpu 0x00007fffc1f8fe40 0x00000e40
差异介绍: