链接器的重定位符号引用
csapp p462 重定位符号引用
假设每个节s是一个字节数组,每个重定位条目r是一个类型为Elf_Rel的结构,假设链接器为每个节(用ADDR(s)表示)和每个符号都选择了运行时地址(用ADDR(r.symbol)表示)
foreach section s{
foreach relocation entry r{/* ptr to reference to be relocated */
/* Relocate a PC-relative reference */
if (r.type == R_386_PC32){
refaddr = ADDR(s) + r.offset; /* ref's run-time address */
*refptr = (unsigned)(ADDR(r.symbol) + *refptr - refaddr);
}
/* Relocate an absolute reference */
if (r.type == R_386_32)
*refptr = (unsigned)(ADDR(r.symbol) + *refptr)
}
}
这个伪代码看不懂s和ADDR(s)的区别是什么?
前面几章都比较顺利,一看到链接瞬间卡壳了....
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论