waf*_*man 9 gcc objdump
我使用objdump来分析共享对象的内存使用情况.与.data和.rodata部分一起,我看到.data.rel.ro部分.
有谁知道这用了什么?
waf*_*man 13
我在这里找到了答案:
gcc,GNU链接器和glibc动态链接器协作实现一个名为只读重定位或relro的想法.这允许链接器在应用动态重定位后将可执行文件的一部分或(更常见地)共享库指定为只读. 这可以用于只读全局变量,它们被初始化为需要重定位的东西,例如函数的地址或不同的全局变量.因为全局变量需要以动态重定位的形式进行运行时初始化,所以它不能放在只读段中.但是,因为它被声明为常量,因此程序可能不会更改,所以动态链接器可以在应用动态重定位后将其标记为只读.
gcc,GNU链接器和glibc动态链接器协作实现一个名为只读重定位或relro的想法.这允许链接器在应用动态重定位后将可执行文件的一部分或(更常见地)共享库指定为只读.
这可以用于只读全局变量,它们被初始化为需要重定位的东西,例如函数的地址或不同的全局变量.因为全局变量需要以动态重定位的形式进行运行时初始化,所以它不能放在只读段中.但是,因为它被声明为常量,因此程序可能不会更改,所以动态链接器可以在应用动态重定位后将其标记为只读.
归档时间:
14 年,4 月 前
查看次数:
8032 次
最近记录: