可重定位的ELF文件
|
ELF文件头用来描述整个文件的组织,对可重定位的目标文件而言重要的字段有:文件类型
|
其中sh_name是被描述的节区的名字,这个值实际是 字符串节区的索引,可以理解为指向
/*st_info*/ #define ELF32_ST_BIND(x) ((x) >> 4) #define ELF32_ST_TYPE(x) (((unsigned int) x) & 0xf) |
其中,st_name是符号名,如前所述他是某个字符串表的表内索引,st_value可能是符号关
/* The following are used with relocations */ #define ELF32_R_SYM(x) ((x) >> 8) #define ELF32_R_TYPE(x) ((x) & 0xff) |
其中,r_offset表示的 是从 节区头部开始到将被重定位影响的存储单位之间的字节偏移 即
名称 |
数值 |
字段 |
计算 |
说明 |
R_386_NONE |
0 |
(无) |
(无) |
|
R_386_32 |
1 |
word32 |
S+A |
|
R_386_PC32 |
2 |
word32 |
S+A-P |
|
R_386_GOT32 |
3 |
word32 |
G+A-P |
此重定位类型计算从全局偏移表基址到符号的全局偏移表项之间的距离。它会通知连接编辑器构造一个全局偏移表。 |
R_386_PLT32 |
4 |
word32 |
转载于:https://my.oschina.net/alphajay/blog/4957
可重定位的ELF文件相关推荐
- Linux下的ELF文件、链接、加载与库(含大量图文解析及例程)
Linux下的ELF文件.链接.加载与库 链接是将将各种代码和数据片段收集并组合为一个单一文件的过程,这个文件可以被加载到内存并执行.链接可以执行与编译时,也就是在源代码被翻译成机器代码时:也可以执行 ...
- linux 内核重定位,Linux 内核学习笔记:预备知识之“目标文件”
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 本文主要阐述 Linux 的目标文件(有可重定位目标文件.可执行目标文件和共享目标文件三种形式),并把重点放在其格式和案 ...
- c语言书籍elf文件,扒一扒ELF文件
ELF文件(Executable Linkable Format)是一种文件存储格式.Linux下的目标文件和可执行文件都按照该格式进行存储,有必要做个总结. 1. 链接举例 2. ELF文件类型2. ...
- elf文件格式_Android so(ELF) 文件解析
Android so(ELF) 文件解析 Android so(ELF) 文件解析 前言 生成 so 文件 相关工具 objdump readelf 整体结构图 头部结构 段表结构 字符串表结构 程序 ...
- Android so(ELF) 文件解析
文章目录 前言 生成 so 文件 相关工具 objdump readelf 整体结构图 头部结构 段表结构 字符串表结构 程序表结构 符号表结构 重定位表结构 其他结构 解析代码 打开 ELF 文件 ...
- C语言 目标文件和可执行文件(ELF文件)
转自:https://www.jianshu.com/p/7c609b70acbd 1.C语言创建程序 1.1C语言创建(分为4个步骤) 编辑 编译 链接 执行 编辑:就是创建和修改C程序的源代码-我 ...
- 04可重定位目标文件ELF文件解析
目录 一:可重定位目标文件的特点 二:可重定位目标文件的格式 一:可重定位目标文件的特点 •可被链接(合并)生成可执行文件或共享目标文件 •静态链接库文件由若干个可重定位目标文件组成 •包含代码.数据 ...
- Android的ELF文件重定位详解,包括64位
0x01 引言 ELF文件格式,主要基于两种,一种是基于链接视图,链接视图即是基于节(Section)来进行解析,一种是基于执行视图,执行视图即是基于段(Segment)来进行解析.前一种是用于静态分 ...
- elf文件中代码段有绝对地址但重定位表中无.text.rel
阅读<程序员的自我修改>第三章 中关于ELF 文件结构描述 关于重定位表 P79时候产生的问题. 文章中说只要有绝对地址的段,就会有重定位.但是readelf -S helloWorld. ...
- 《程序员的自我修养》读书笔记3——使用KEIL研究ELF文件的重定位
空间和地址分配 仍然采用上一节的代码.看生成的代码段.3个中间目标文件的代码段: fromelf -v a.o============================================= ...
最新文章
- 关于清除浮动那些事儿~
- OpenMPI 安装
- 算法每日学打卡:java语言基础题目打卡(19-21)
- 使用 Feign 调用分页接口报错:Method has too many Body parameters(亲测)
- LAMP源代码编译整理
- 网络七层协议 五层模型 TCP连接 HTTP连接 socket套接字
- pytorch创建tensor
- FineUI小技巧(3)表格导出与文件下载
- 深度学习大厂前端项目开发全流程全流程
- 104. 字符串函数
- 前端开发写代码哪个软件更好用?
- 国产双模蓝牙芯片简介
- A problem has been detected and windows has been shut down to prevent damage to your computer.
- 【CSDN|每日一练】小艺的英文名
- I2S UDAl1380
- linux 系统基本设置
- android仿QQ优雅的修改App字体大小
- 2021高考汕头一中成绩查询,2021汕头市地区高考成绩排名查询,汕头市高考各高中成绩喜报榜单...
- 用计算机制作程序框图,流程图 结构图制作更轻松
- oracle 误删 log文件,Redo log文件被删除恢复
热门文章
- mssql2000跟mssql2005共享问题
- JSP与Servlet传值及对比
- php 页面跳转 url地址不变,【后端开发】php跳转页面url不变
- 编译OpenJDK8-u332:/bin/sh: 1: [: -a: unexpected operator/line 0: [: too many arguments
- ProGuard混淆时保留注释(@类内容)
- JAVA格式化输出浮点数:空格,位数
- 帮助朋友干活,平生第一次收到月饼
- 软件基本功:垃圾代码的共同特征
- 全网首发:WORD取消了光标的方向
- LINUX下载编译libopusenc-0.2.1.tar.gz