gpt4 book ai didi

c - vdso gettimeofday,具有 64 位内核和为 32 位编译的应用程序

转载 作者:行者123 更新时间:2023-11-30 16:58:17 27 4
gpt4 key购买 nike

在 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。

最佳答案

在我的 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 中,并且您的内核版本较旧。

关于c - vdso gettimeofday,具有 64 位内核和为 32 位编译的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38987922/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com