2011-08-11 43 views
5

我正在使用objdump來分析共享對象的內存使用情況。隨着.data和.rodata部分,我看到一個.data.rel.ro部分。什麼是.data.rel.ro用於?

任何人都知道這用於什麼?

回答

8

我找到了答案here

GCC,GNU鏈接器和glibc的動態鏈接合作 實現的想法稱爲只讀搬遷,或relro。這允許鏈接器將 共享庫的一部分指定爲可執行文件的一部分或更一般地指定爲在應用動態重定位之後爲只讀的。

這可以用於只讀全局變量,該變量被初始化爲 以需要重定位,例如函數的地址或不同的全局變量。由於全局變量 需要動態重定位形式的運行時初始化,因此它不能置於只讀段中。但是,因爲 聲明爲常量,因此可能不會被 程序更改,所以在應用動態重定位後,動態鏈接程序可將其標記爲只讀。