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)的区别是什么?
前面几章都比较顺利,一看到链接瞬间卡壳了....