发明名称 |
一种可重定位文件动态加载的方法及装置 |
摘要 |
本发明公开一种可重定位文件动态加载的方法,包括:解析可重定位文件获取信息,并在找到重定位节区后获取重定位目的地址、计算待重定位的地址及跳转距离;判断跳转距离是否超出短跳转范围,如果未超出短跳转范围,则将所述重定位目的地址填入待重定位的地址,进行重定位加载;如果超出短跳转范围,则添加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 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部 |