我已经读过ELF可执行对象文件不可重定位,并且.symtab中的符号有一个绝对地址/"值"相对于"相对偏移"用于可重定位的对象。我的理解是否正确?
如果是这样,那么绝对地址是如何确定的?由于绝大多数可执行目标文件都驻留在ROM(例如HDD)而不是RAM中,因此您不需要在执行之前将文件加载到RAM中吗?不会和"重新定位"?
相同由于
答案 0 :(得分:0)
链接非位置无关的可执行文件,以便在固定地址加载(进入RAM)。例如,在32位x86 Linux上,默认的链接地址为0x8048000
。该地址可以用例如-Ttext
链接器参数。
.symtab
部分中的符号值确实是绝对的,并假设二进制文件是在链接到的地址加载的。
可执行对象文件驻留在ROM(例如HDD)而不是RAM中,在执行之前是否需要将文件加载到RAM中?
是的,但这与符号相对或绝对无关。