Chinaunix

标题: 有关目标文件中重定位项的疑惑 [打印本页]

作者: 1w2b3l    时间: 2014-04-21 23:21
标题: 有关目标文件中重定位项的疑惑
每个目标文件都有两个重定位项集合,一个是文本段的,一个是数据段的(bss段被定义为全0, 因此没有什么需要重定位的。)

每个目标文件都有两个重定位项集合“,我的理解是:

例如:
         全局变量 int global;
         本地局部变量 int local;

         代码为:value = local;

"文本段的重定位项"指的是:
value在输出文件中所在的内存位置(链接后的位于文本段中指令所在的虚拟地址),该赋值指令需要被修改,以正确反映value在数据段中的内存位置,把右值放到里面。
简而言之,就是二进制指令所加载到进程地址空间的内存地址。

"数据段的重定位项"指的是:
数据段被加载到进程地址空间后,value在数据段中的内存地址。

在链接过程的输入文件中,指令中对value的赋值需要value的准确地址,而数据段在进程地址空间的内存位置确定下来以后,才能修改引用了value的所有指令。

疑惑啊,这样想至少自己觉得想通了,对不对,是不是确实反映了作者的意思,或者说链接器的处理方式,有待确认。





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2