在带有glibc版本2.15的64位内核上运行的32位应用程序是否支持vdso?如果是,我如何使其适用于在64位内核上运行的32位应用程序?因为即使"linux-vdso.so.1“上的dlopen成功了,"__vdso_gettimeofday”上的dlsym也失败了。
在同一系统上,我可以从一个64位编译的应用程序中对"linux-vdso.so.1“执行dlopen &对"__vdso_gettimeofday”执行dlsym。
发布于 2016-08-18 14:40:32
在我的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这表明您正在寻找的__vdso_gettimeofday已添加到内核2.6中,并且您的内核版本较旧。
https://stackoverflow.com/questions/38987922
复制相似问题