可执行目标文件的.symtab中的符号值

时间:2014-03-14 14:59:09

标签: executable elf

我已经读过ELF可执行对象文件不可重定位,并且.symtab中的符号有一个绝对地址/"值"相对于"相对偏移"用于可重定位的对象。我的理解是否正确?

如果是这样,那么绝对地址是如何确定的?由于绝大多数可执行目标文件都驻留在ROM(例如HDD)而不是RAM中,因此您不需要在执行之前将文件加载到RAM中吗?不会和"重新定位"?

相同

由于

1 个答案:

答案 0 :(得分:0)

链接非位置无关的可执行文件,以便在固定地址加载(进入RAM)。例如,在32位x86 Linux上,默认的链接地址为0x8048000。该地址可以用例如-Ttext链接器参数。

.symtab部分中的符号值确实是绝对的,并假设二进制文件是在链接到的地址加载的。

  

可执行对象文件驻留在ROM(例如HDD)而不是RAM中,在执行之前是否需要将文件加载到RAM中?

是的,但这与符号相对或绝对无关。