什么是.data.rel.ro用于?

时间:2011-08-11 16:44:55

标签: gcc objdump

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

任何人都知道这是用来做什么的?

1 个答案:

答案 0 :(得分:12)

我找到了答案here

  

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

     

这可以用于初始化的只读全局变量   需要重新安置的东西,例如a的地址   函数或不同的全局变量。因为全局变量   需要以动态重定位的形式进行运行时初始化,   它不能放在只读段中。但是,因为它是   声明是不变的,因此可能不会被改变   程序,动态链接器可以在动态后将其标记为只读   搬迁已经实施。