Elf动态解析符号过程(转载)
来源:互联网
作者:west263.com
时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
break;
}
}
case 0:
value = _dl_lookup_symbol (strtab sym->st_name, &sym, l->l_scope,
l->l_name, ELF_MACHINE_JMP_SLOT);
}
/*此时value为object装载的基地址*/
/* Currently value contains the base load address of the object
that defines sym. Now add in the symbol offset. */
value = (sym ? value sym->st_value : 0);/*在object中函数的绝对地址*/
/* And now perhaps the relocation addend. */
value = elf_machine_plt_value (l, reloc, value);/*可能还需要一下重定位*/
/* Finally, fix up the plt itself. */
elf_machine_fixup_plt (l, reloc, rel_addr, value);/*修正GOT[n]*/
return value;
}
static inline Elf32_Addr
elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc,
Elf32_Addr value)
{
return value reloc->r_addend;
}
/* Fixup a PLT entry to bounce directly to the function at VALUE. */
static inline void
elf_machine_fixup_plt (struct link_map *map, const Elf32_Rel *reloc,
Elf32_Addr *reloc_addr, Elf32_Addr value)
{
*reloc_addr = value;
}
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



