.data.rel.ro 有何用途?

发布于 2024-11-29 00:49:03 字数 121 浏览 1 评论 0原文

我正在使用 objdump 来分析共享对象的内存使用情况。除了 .data 和 .rodata 部分之外,我还看到 .data.rel.ro 部分。

有谁知道这个是做什么用的吗?

I am using objdump to analyze a shared object's memory usage. Along with the .data and .rodata sections I see a .data.rel.ro section.

Anyone know what this used for?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小鸟爱天空丶 2024-12-06 00:49:03

我在此处找到了答案:

gcc、GNU 链接器和 glibc 动态链接器协作
实现一个称为只读重定位(relro)的想法。这允许
链接器指定可执行文件的一部分或(更常见)
动态重定位后共享库为只读
已应用。

这可用于初始化的只读全局变量
需要搬迁的地方,例如某个地址
函数或不同的全局变量。因为全局变量
需要以动态重定位的形式进行运行时初始化,
它不能放置在只读段中。然而,因为它是
声明为常量,因此不能被更改
程序,动态链接器可以在动态链接后将其标记为只读
已申请搬迁。

I found the answer here:

gcc, the GNU linker, and the glibc dynamic linker cooperate to
implement an idea called read-only relocations, or relro. This permits
the linker to designate a part of an executable or (more commonly) a
shared library as being read-only after dynamic relocations have been
applied.

This may be used for read-only global variables which are initialized
to something which requires a relocation, such as the address of a
function or a different global variable. Because the global variable
requires a runtime initialization in the form of a dynamic relocation,
it can not be placed in a read-only segment. However, because it is
declared to be constant, and therefore may not be changed by the
program, the dynamic linker can mark it as read-only after the dynamic
relocation has been applied.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文