[英]vdso gettimeofday with 64 bit kernel & application compiled for 32 bit
is vdso supported for a 32 bit application which is running on a 64 bit kernel with glibc version 2.15.? 在glibc 2.15版的64位内核上运行的32位应用程序是否支持vdso? If yes, how do I make it work for 32 bit application running on 64 bit kernel.?
如果是,如何使它适用于在64位内核上运行的32位应用程序。 Cause even though dlopen on "linux-vdso.so.1" is success, dlsym on "__vdso_gettimeofday" fails.
原因即使“ linux-vdso.so.1”上的dlopen成功,“ __ vdso_gettimeofday”上的dlsym也失败。
On the same system I able to do a dlopen on "linux-vdso.so.1" & dlsym on "__vdso_gettimeofday" from a application compiled for 64 bit. 在同一系统上,我可以从为64位编译的应用程序在“ linux-vdso.so.1”上执行dlopen,在“ __vdso_gettimeofday”上执行dlsym。
On my 64-bit Linux 4.4.15, the 32-bit vdso has these symbols: 在我的64位Linux 4.4.15上,32位vdso具有以下符号:
readelf -Ws vdso32
Symbol table '.dynsym' contains 9 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000ce0 9 FUNC GLOBAL DEFAULT 12 __kernel_sigreturn@@LINUX_2.5
2: 00000d00 13 FUNC GLOBAL DEFAULT 12 __kernel_vsyscall@@LINUX_2.5
3: 00000ad0 438 FUNC GLOBAL DEFAULT 12 __vdso_gettimeofday@@LINUX_2.6
4: 00000c90 42 FUNC GLOBAL DEFAULT 12 __vdso_time@@LINUX_2.6
5: 00000770 853 FUNC GLOBAL DEFAULT 12 __vdso_clock_gettime@@LINUX_2.6
6: 00000cf0 8 FUNC GLOBAL DEFAULT 12 __kernel_rt_sigreturn@@LINUX_2.5
7: 00000000 0 OBJECT GLOBAL DEFAULT ABS LINUX_2.5
8: 00000000 0 OBJECT GLOBAL DEFAULT ABS LINUX_2.6
This suggests that the __vdso_gettimeofday
you are looking for has been added in kernel 2.6, and that your kernel version is older. 这表明您要查找的
__vdso_gettimeofday
已在内核2.6中添加,并且您的内核版本较旧。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.