首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正在加载已加载的共享库的数据段

正在加载已加载的共享库的数据段
EN

Stack Overflow用户
提问于 2017-07-05 21:49:47
回答 1查看 118关注 0票数 0

要使全局偏移表工作,GOT必须位于文本段的固定位置。现在假设一个程序需要一个共享库。还假设共享库已经被OS加载用于某个其他进程。现在对于我们的程序来说,由于共享库的文本部分已经加载,所以它只需要加载数据段。共享库文本部分被映射回我们进程的虚拟地址。但是,如果在我们共享库的虚拟地址的固定偏移处已经有一些数据/文本或其他东西,那该怎么办呢?动态链接器如何解决这种冲突?一种方法是将R_386_GOTPC留在文本部分,直到加载时,让动态链接器将其更改为新的偏移量。在实践中是这样做的吗?

EN

回答 1

Stack Overflow用户

发布于 2017-07-17 23:25:47

在GNU上,即使是相同的DSO也被映射到不同的进程中的不同地址。它们之间根本不共享任何数据。这意味着GOT只是私有数据(如.data),并在加载时使用正确的地址(存根或BIND_NOW的正确函数地址)进行初始化。

(这假设prelink未在使用中,这在某种程度上是有问题的。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44928144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档