发明名称 一种可重定位文件动态加载的方法及装置
摘要 本发明公开一种可重定位文件动态加载的方法,包括:解析可重定位文件获取信息,并在找到重定位节区后获取重定位目的地址、计算待重定位的地址及跳转距离;判断跳转距离是否超出短跳转范围,如果未超出短跳转范围,则将所述重定位目的地址填入待重定位的地址,进行重定位加载;如果超出短跳转范围,则添加veneer代码段,将超出短跳转范围的跳转间接跳转到重定位目的地址,进行重定位加载。相应地,本发明提供一种可重定位动态加载的装置,包括解析模块、计算模块、查找模块、判断模块、重定位动态加载模块。因此,本发明能在函数调用距离超出跳转范围时,实现可重定位动态加载。
申请公布号 CN101697131B 申请公布日期 2013.07.03
申请号 CN200910210623.0 申请日期 2009.11.04
申请人 中兴通讯股份有限公司 发明人 何海建;武晓慧;范伟
分类号 G06F9/445(2006.01)I 主分类号 G06F9/445(2006.01)I
代理机构 北京派特恩知识产权代理事务所(普通合伙) 11270 代理人 张颖玲;王黎延
主权项 一种可重定位文件动态加载的方法,其特征在于,包括:解析可重定位文件获取信息,并在找到重定位节区后获取重定位目的地址,计算待重定位的地址及跳转距离;判断所述跳转距离是否超出短跳转范围,如果未超出短跳转范围,则将所述重定位目的地址填入待重定位的地址,进行重定位加载;如果超出短跳转范围,则生成veneer代码段,并将长跳转指令和重定位目的地址分别填充到veneer代码段中;将veneer代码段的起始地址填入待重定位的地址,形成一个有效的短跳转,所述有效的短跳转指令指向veneer代码段;通过有效的短跳转跳到veneer代码段,再通过veneer代码段的长跳转跳转到重定位目的地址,进行重定位加载;所述veneer代码段为实现ARM状态到thumb状态转换、以及长距离跳转的代码段。
地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部