4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
新闻详情
PowerPC上ELF可执行文件的符号解析(二)_文档之家
来自 : www.doczj.com/doc/a70e281e10a6 发布时间:2021-03-25
当前位置:文档之家 > PowerPC上ELF可执行文件的符号解析(二) PowerPC上ELF可执行文件的符号解析(二)

PowerPC上ELF可执行文件的符号解析(二)

一.概念

在上一篇文章中介绍了符号解析的基本概念,象PLT表、Symbol表、Relocation表等,这些概念在64位环境仍然存在,但PLT表的意义在64位环境下发生了变化。在讲解64位环境下PowerPC符号解析的过程之前,先说64位和32位环境在汇编语言这个层次上的两个不同之处。

1.TOC(Table of Contents)

我们知道在32位环境下GOT表的地址是必须在汇编程序中计算出来的,具体的计算方法读者有兴趣可以自己写一个简单的程序,然后用gcc -fPIC -S来编译后察看汇编代码即可。64位环境下PowerPC引入了一个新的概念:TOC。它是可执行文件和共享库的一段数据,包括.got、.toc和small data area(用来存放local的小于指定大小的数据),最大可以有64K 字节。PowerPC 64 ABI规定了寄存器r2专门用来存放TOC基址,通常是(TOC的起始地址+0x8000)。一般而言,TOC中各个section的顺序是.gotàtocàsmall data area,所以TOC的起始地址就等于.got的地址。

2.函数描述符(Function Descriptor)

64位和32位一个很大的不同点就是函数描述符的引入。一个函数描述符是三个双字组成的结构:

第一个双字是该函数的真正入口点

第二个双字是该函数的TOC基址

第三个双字是为其他语言,比如Pascal和PL/1准备的环境指针

在64位环境下,和函数名相同的symbol名是函数描述符的地址,函数入口点symbol名是函数名前面加个点。比如我们定义了一个函数void Func(),那么用汇编表示,Func是它的函数描述符,.Func是它的函数入口点。

二.变量符号动态解析过程

变量符号的动态解析过程和32位的情况相比没有太多的变化,系统在载入程序过程中将变量symbol地址存入到TOC中,当需要引用变量symbol时就赋该变量所属的TOC基址到r2中,以r2

作为基址加上(变量symbol在TOC中的偏移量)就可以从TOC中取得该symbol的实际地址。所以仅仅是以r2替代GOT地址,相当于是换了个基址表示。

三.函数符号动态解析过程

上一页下一页
1.ELF1.1规范中文版 http://m.doczj.com/doc/...en_US/a_doc_lib/aixassem/alangref/alangref.PowerPC上ELF可执行文件的符号解析(二),PowerPC上ELF可执行文件的符号解析(二)下载PowerPC上ELF可执行文件的符号解析(二)的内容摘要:PowerPC上ELF可执行文件的符号解析(二)一.概念在上一篇文章中介绍了符号解析的基本概念,象PLT表、Symbol表、Relocation表等,这些概念在64位环境仍然存在,但PLT表的意义在64位环境下发生了变化。在讲解64位环境PowerPC上ELF可执行文件的符号解析(二)

本文链接: http://enelf.immuno-online.com/view-735005.html

发布于 : 2021-03-25 阅读(0)
公司介绍
品牌分类
制药的
联络我们
服务热线:4000-520-616
(限工作日9:00-18:00)
QQ :1570468124
手机:18915418616
官网:http://