Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
像 dladdr 这样的东西给了我一个共享对象的动态库句柄,或者一种从共享对象的基地址获取句柄的方法。包含共享对象的文件可能已被移动或删除,所以不,我不能 dlopen() dladdr 给出的文件名。
glibc 的 dlopen 句柄基于 link_map。我可以迭代所有的link_map,看看是否有一个l_addr 等于dladdr 给出的那个。该链接映射的地址是句柄。
Dietlibc 也使用 link_map 作为句柄。
对于 uClibc,还有另一个结构 - dyn_elf。它包含一个指向链接映射的指针。全局变量 _dl_symbol_tables 有一个指向 dyn_elf 链表头部的指针。
仿生使用自己的结构,其中包含 struct link_map 作为成员(不是指针)。