![](/img/trans.png)
[英]How to get address of a symbol in a shared library when provided address of the library?
[英]glibc - get handle to shared library having symbol containing specified address
諸如dladdr之類的東西為我提供了共享庫的動態庫句柄,或者使我可以從共享庫的基址獲取句柄的方法。 包含共享庫的文件可能已被移動或刪除,所以不能,我不能dlopen()dladdr給定的文件名。
glibc的dlopen句柄基於link_map。 我可以迭代所有的link_map,看看是否有l_addr等於dladdr給出的l_addr。 該link_map的地址是句柄。
Dietlibc還使用link_map的句柄。
對於uClibc,還有另一個結構-dyn_elf。 它包含一個指向link_map的指針。 全局變量_dl_symbol_tables具有一個指向dyn_elf的鏈接列表的開頭的指針。
bionic使用其自己的結構,該結構包含struct link_map作為成員(而不是指針)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.