【发布时间】:2011-10-25 04:14:11
【问题描述】:
我正在使用 objdump 来分析共享对象的内存使用情况。除了 .data 和 .rodata 部分,我还看到了 .data.rel.ro 部分。
谁知道这个是干什么用的?
【问题讨论】:
我正在使用 objdump 来分析共享对象的内存使用情况。除了 .data 和 .rodata 部分,我还看到了 .data.rel.ro 部分。
谁知道这个是干什么用的?
【问题讨论】:
我找到了答案here:
gcc、GNU 链接器和 glibc 动态链接器合作 实现一个称为只读重定位或 relro 的想法。这允许 链接器指定可执行文件的一部分或(更常见的)一个 动态重定位后共享库为只读 已申请。
这可以用于已初始化的只读全局变量 到需要搬迁的东西,例如一个地址 函数或不同的全局变量。因为全局变量 需要动态重定位形式的运行时初始化, 它不能放在只读段中。然而,因为它是 声明为常量,因此不能由 程序,动态链接器可以在动态后将其标记为只读 已申请搬迁。
【讨论】: