简体   繁体   English

glibc-获取具有包含指定地址的符号的共享库的句柄

[英]glibc - get handle to shared library having symbol containing specified address

Something like dladdr that gives me a dynamic library handle to the shared object or a way to get the handle from the shared object's base address. 诸如dladdr之类的东西为我提供了共享库的动态库句柄,或者使我可以从共享库的基址获取句柄的方法。 The file containing the shared object may have been moved or deleted so no, I can't dlopen() the filename given by dladdr. 包含共享库的文件可能已被移动或删除,所以不能,我不能dlopen()dladdr给定的文件名。

glibc's dlopen handles are based on link_map. glibc的dlopen句柄基于link_map。 I can iterate all link_map's and see if one has l_addr equal to the one given by dladdr. 我可以迭代所有的link_map,看看是否有l_addr等于dladdr给出的l_addr。 The address of that link_map is the handle. 该link_map的地址是句柄。

dietlibc also uses link_map's as handles. Dietlibc还使用link_map的句柄。

In the case of uClibc there is another struct - dyn_elf. 对于uClibc,还有另一个结构-dyn_elf。 It contains a pointer to a link_map. 它包含一个指向link_map的指针。 The global variable _dl_symbol_tables has a pointer to the head of a linked list of dyn_elf's. 全局变量_dl_symbol_tables具有一个指向dyn_elf的链接列表的开头的指针。

bionic uses its own struct which contains struct link_map as a member (not a pointer). bionic使用其自己的结构,该结构包含struct link_map作为成员(而不是指针)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM